我有一个pandas.core.frame.Pandas对象,需要根据其属性名称从中返回一个值。下面的代码有效
val = pandas_object.attr_name
Run Code Online (Sandbox Code Playgroud)
但是,我需要更改属性,所以我需要动态的东西,例如
val = pandas_object.get(attr_name)
Run Code Online (Sandbox Code Playgroud)
熊猫objecet没有getter函数,因为我收到以下错误
AttributeError: 'Pandas' object has no attribute 'get'
Run Code Online (Sandbox Code Playgroud)
其他熊猫班似乎也有这种情况。http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.get.html
我找不到有关这种类型的Oaf Pandas对象的大量文档。有没有办法获得类似于.get()的值?
这是我的对象
Pandas(Index=0, Time_USec=Timestamp('2016-12-19 09:05:00.683243'), OrderId=0, Status='New')
Run Code Online (Sandbox Code Playgroud)
当我遵循adget使用getattr时,出现以下错误
print event.__getattr__("Time_USec")
Run Code Online (Sandbox Code Playgroud)
AttributeError:'Pandas'对象没有属性' getattr '
小智 10
您提到的 Pandas 类实际上是一个动态创建的命名元组类(请参见此处)。默认情况下,该类被命名为“Pandas”,但您实际上可以将其命名为您想要的任何名称,如下所示:
my_tuples = list(df.itertuples(name='Whatever'))
assert isinstance(my_tuples[0], tuple)
assert my_tuples[0].__class__.__name__ == 'Whatever'
Run Code Online (Sandbox Code Playgroud)
正如您从命名元组的官方文档中看到的,您可以将它们转换为字典,如下所示:
some_object = some_namedtuple._asdict()
val = some_object.get(attr_name)
Run Code Online (Sandbox Code Playgroud)
但检索属性的更 Pythonic 方法是简单地使用内置的getattr函数,该函数也适用于任何其他 Python 对象:
val = getattr(some_namedtuple, attr_name)
Run Code Online (Sandbox Code Playgroud)
我偶然发现的另一个解决方案是
pandas_object.__getattribute__(attr_name)
Run Code Online (Sandbox Code Playgroud)
似乎比
pandas_object.__dict__[attr_name]
Run Code Online (Sandbox Code Playgroud)
不幸的是,与 .get 相比,此方法不允许设置默认值
| 归档时间: |
|
| 查看次数: |
2072 次 |
| 最近记录: |