如何访问存储在 DataFrame 中的对象属性来评估条件?

How accessing object attributes that are stored in a DataFrame to assess conditions?

请问,当对象存储在 pandas DataFrame 中时,是否有任何方法可以通过 loc 评估对象属性的条件?

类似于:

import pandas as pd
from dataclasses import dataclass 

@dataclass(order=True, frozen=True)
class teo(object):
    a : str

te = teo('b')
df = pd.DataFrame({'c':[te]})

df.loc[df['c'].getattr('a') == 'b']

以上示例输出:

AttributeError: 'Series' object has no attribute 'getattr'

感谢您的帮助! 最佳

您需要单独访问每个 teo 对象。一种方法是通过列表理解。

df.iloc[[i for i,v in df['c'].iteritems() if v.a=='b']]

您的语法不正确;应该是 getattr(teo, 'b')

要在列中广播,您可以使用 apply 和匿名函数:

df.loc[df['c'].apply(lambda x: getattr(x,'a')) == 'b']