Let\'s say I have a custom class in python, that has the attribute val
. If I have a pandas dataframe with a column of these objects, how can I access this attri
Setup code:
import operator
import random
from dataclasses import dataclass
import numpy as np
import pandas as pd
@dataclass
class SomeObj:
val: int
df = pd.DataFrame(data={f"col_1": [SomeObj(random.randint(0, 10000)) for _ in range(10000000)]})
df['col_1'].map(lambda elem: elem.val)
Time: ~3.2 seconds
df['col_1'].map(operator.attrgetter('val'))
Time: ~2.7 seconds
[elem.val for elem in df['col_1']]
Time: ~1.4 seconds
Note: Keep in mind that this solution produces a different result type, which may be an issue in certain situations.