微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何返回带有numpy.average的添加列的DataFrame?

如何解决如何返回带有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函数本身有关。

我的问题是:

  1. 此AttributeError背后究竟是什么?
  2. 如何为numpy.average创建一个新的DataFrame列?

p.s。这是我的第一个问题,因此,如果格式有点怪异,对不起。请告知您是否看到我可以改进的方法

解决方法

您应该直接对熊猫做

df['mean'] = df.mean(axis=1)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。