首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫来自pandas.core.frame.Pandas对象

熊猫来自pandas.core.frame.Pandas对象
EN

Stack Overflow用户
提问于 2017-01-28 05:30:23
回答 4查看 7.3K关注 0票数 10

我有一个pandas.core.frame.Pandas对象,需要根据它的属性名从它返回一个值。下面的代码起作用

代码语言:javascript
复制
val = pandas_object.attr_name

然而,我需要得到更改的属性,所以我需要一些动态的东西,比如

代码语言:javascript
复制
val = pandas_object.get(attr_name)

熊猫对象没有getter函数,因为我得到了下面的错误

代码语言:javascript
复制
AttributeError: 'Pandas' object has no attribute 'get'

其他熊猫班似乎也有这种情况。http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.get.html

我找不到很多关于这类软体动物熊猫对象的资料。有没有一种方法可以获得类似于.get()的值?

这就是我的目标

代码语言:javascript
复制
Pandas(Index=0, Time_USec=Timestamp('2016-12-19 09:05:00.683243'), OrderId=0, Status='New')

当我使用getattr时,我得到以下错误

代码语言:javascript
复制
print event.__getattr__("Time_USec")

AttributeError:“熊猫”对象没有属性“getattr

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-01-28 07:20:24

我偶然发现的另一个解决方案是

代码语言:javascript
复制
pandas_object.__getattribute__(attr_name)

似乎比

代码语言:javascript
复制
pandas_object.__dict__[attr_name]

不幸的是,与.get相反,此方法允许不设置默认值

票数 9
EN

Stack Overflow用户

发布于 2019-05-21 23:35:44

您提到的Pandas类实际上是动态创建的名为tuple类(请参阅这里)。默认情况下,类名为"Pandas“,但实际上您可以随意命名它,如下所示:

代码语言:javascript
复制
my_tuples = list(df.itertuples(name='Whatever'))
assert isinstance(my_tuples[0], tuple)
assert my_tuples[0].__class__.__name__ == 'Whatever'

命名元组的正式文档中可以看到,您可以将它们转换为如下所示的字典:

代码语言:javascript
复制
some_object = some_namedtuple._asdict()
val = some_object.get(attr_name)

但是,检索属性的一种更Python的方法是只使用内置的getattr函数,它也适用于任何其他Python对象:

代码语言:javascript
复制
val = getattr(some_namedtuple, attr_name)
票数 6
EN

Stack Overflow用户

发布于 2017-01-28 05:44:20

使用__dict__属性。

请考虑以下示例

代码语言:javascript
复制
attr_name = 'ABCIndex'
pd.core.frame.algos.__dict__[attr_name]

pandas.types.generic.ABCIndex
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41906659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档