如何解决如何返回带有numpy.average的添加列的DataFrame?
我想在数据框中创建一个新列,其中包含前一列的平均数据。我正在使用的数据框非常大(超过10年的GDP),因此我将其缩小为以下尺寸。
这是我的原始数据框:
[In 1]: import pandas as pd
[In 2]: import numpy as np
[In 3]: original = pd.DataFrame([[1,2],[1,3],[4,6]],columns=['A','B'])
[Out 3]:
2006 2007 2008
0 1 2 3
1 1 3 5
2 4 6 8
我想要的数据框:
2006 2007 2008 avg
0 1 2 3 2.0
1 1 3 5 3.0
2 4 6 8 6.0
到目前为止,我编写的当前代码如下:
[In 4]: def avg(df):
data = df[['2006','2007','2008']]
df['avg'] = np.average(data)
return df
original.apply(avg,axis = 1)
但是运行它后,我收到以下错误:
AttributeError: ("'float' object has no attribute 'dtype'",'occurred at index China')
问题是,在[In 4]之后的代码中,如果我将np.average更改为np.max或np.min,则将创建一个遵循我预期的代码输出格式的结果DataFrame,正确的最大/最小值。因此,此错误肯定与np.average函数本身有关。
我的问题是:
- 此AttributeError背后究竟是什么?
- 如何为numpy.average创建一个新的DataFrame列?
p.s。这是我的第一个问题,因此,如果格式有点怪异,对不起。请告知您是否看到我可以改进的方法!
解决方法
您应该直接对熊猫做
df['mean'] = df.mean(axis=1)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。