我有一个pandas.core.frame.Pandas对象,需要根据它的属性名从它返回一个值。下面的代码起作用
val = pandas_object.attr_name然而,我需要得到更改的属性,所以我需要一些动态的东西,比如
val = pandas_object.get(attr_name)熊猫对象没有getter函数,因为我得到了下面的错误
AttributeError: 'Pandas' object has no attribute 'get'其他熊猫班似乎也有这种情况。http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.get.html
我找不到很多关于这类软体动物熊猫对象的资料。有没有一种方法可以获得类似于.get()的值?
这就是我的目标
Pandas(Index=0, Time_USec=Timestamp('2016-12-19 09:05:00.683243'), OrderId=0, Status='New')当我使用getattr时,我得到以下错误
print event.__getattr__("Time_USec")AttributeError:“熊猫”对象没有属性“getattr”
发布于 2017-01-28 07:20:24
我偶然发现的另一个解决方案是
pandas_object.__getattribute__(attr_name)似乎比
pandas_object.__dict__[attr_name]不幸的是,与.get相反,此方法允许不设置默认值
发布于 2019-05-21 23:35:44
您提到的Pandas类实际上是动态创建的名为tuple类(请参阅这里)。默认情况下,类名为"Pandas“,但实际上您可以随意命名它,如下所示:
my_tuples = list(df.itertuples(name='Whatever'))
assert isinstance(my_tuples[0], tuple)
assert my_tuples[0].__class__.__name__ == 'Whatever'从命名元组的正式文档中可以看到,您可以将它们转换为如下所示的字典:
some_object = some_namedtuple._asdict()
val = some_object.get(attr_name)但是,检索属性的一种更Python的方法是只使用内置的getattr函数,它也适用于任何其他Python对象:
val = getattr(some_namedtuple, attr_name)发布于 2017-01-28 05:44:20
使用__dict__属性。
请考虑以下示例
attr_name = 'ABCIndex'
pd.core.frame.algos.__dict__[attr_name]
pandas.types.generic.ABCIndexhttps://stackoverflow.com/questions/41906659
复制相似问题