Python 获取数据帧中所有列的平均值并创建新的数据帧

Python 获取数据帧中所有列的平均值并创建新的数据帧,python,dataframe,series,Python,Dataframe,Series,我有一个只有数值的数据框,我想计算每列的平均值并创建一个新的数据框。 原始数据帧由datetimefield索引。新的数据帧应该由与原始数据帧相同的字段索引,其值等于原始数据帧的最后一行索引 迄今为止的代码 mean_series=df.mean() df_mean= pd.DataFrame(stddev_series) df_mean.rename(columns=lambda x: 'std_dev_'+ x, inplace=True) 但这是一个错误 df_mean.ren

我有一个只有数值的数据框,我想计算每列的平均值并创建一个新的数据框。
原始数据帧由datetimefield索引。新的数据帧应该由与原始数据帧相同的字段索引,其值等于原始数据帧的最后一行索引

迄今为止的代码

mean_series=df.mean()     
df_mean= pd.DataFrame(stddev_series)
df_mean.rename(columns=lambda x: 'std_dev_'+ x, inplace=True)
但这是一个错误

df_mean.rename(columns=lambda x: 'std_mean_'+ x, inplace=True)
TypeError: ufunc 'add' did not contain a loop with signature matching types dtype('S21') dtype('S21') dtype('S21')

您的问题意味着您需要一个具有单行的新数据帧

In [10]: df.head(10)
Out[10]: 
                            0         1         2         3
2011-01-01 00:00:00  0.182481  0.523784  0.718124  0.063792
2011-01-01 01:00:00  0.321362  0.404686  0.481889  0.524521
2011-01-01 02:00:00  0.514426  0.735809  0.433758  0.392824
2011-01-01 03:00:00  0.616802  0.149099  0.217199  0.155990
2011-01-01 04:00:00  0.525465  0.439633  0.641974  0.270364
2011-01-01 05:00:00  0.749662  0.151958  0.200913  0.219916
2011-01-01 06:00:00  0.665164  0.396595  0.980862  0.560119
2011-01-01 07:00:00  0.797803  0.377273  0.273724  0.220965
2011-01-01 08:00:00  0.651989  0.553929  0.769008  0.545288
2011-01-01 09:00:00  0.692169  0.261194  0.400704  0.118335

In [11]: df.tail()
Out[11]: 
                            0         1         2         3
2011-01-03 19:00:00  0.247211  0.539330  0.734206  0.781125
2011-01-03 20:00:00  0.278550  0.534943  0.804949  0.137291
2011-01-03 21:00:00  0.602246  0.108791  0.987120  0.455887
2011-01-03 22:00:00  0.003097  0.436435  0.987877  0.046066
2011-01-03 23:00:00  0.604916  0.670532  0.513927  0.610775


In [12]: df.mean()
Out[12]: 
0    0.495307
1    0.477509
2    0.562590
3    0.447997
dtype: float64

In [13]: new_df = pd.DataFrame(df.mean().to_dict(),index=[df.index.values[-1]])

In [14]: new_df
Out[14]: 
                            0         1        2         3
2011-01-03 23:00:00  0.495307  0.477509  0.56259  0.447997

In [15]: new_df.rename(columns=lambda c: "mean_"+str(c))
Out[15]: 
                       mean_0    mean_1   mean_2    mean_3
2011-01-03 23:00:00  0.495307  0.477509  0.56259  0.447997

我认为这与你的问题无关,但你计算的是代码中的标准偏差,而不是平均值。谢谢,我用平均值更新了代码