大熊猫添加一列,只有一行

时间:2018-10-05 01:51:16

标签: python pandas dataframe

这听起来有点不可思议,但是我认为这正是我现在需要的:

我有几个熊猫数据框,其中包含带有浮点数的列,例如:

   a  b  c
0  0  1  2
1  3  4  5
2  6  7  8

现在,我想添加一列,仅包含一行,并且该值等于列“ a”的平均值,在这种情况下为3.0。因此,新的数据框将如下所示:

   a  b  c  average
0  0  1  2  3.0
1  3  4  5
2  6  7  8

下面的所有行都是空的。

我已经尝试过类似df['average'] = np.mean(df['a'])之类的事情,但这使我的专栏总分为3.0。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:3)

可以执行以下操作:

df['average'] = [np.mean(df['a'])]+['']*(len(df)-1)

答案 1 :(得分:3)

这是一个完整的例子:

import pandas as pd
import numpy as np

df = pd.DataFrame(
    [(0,1,2), (3,4,5), (6,7,8)],
    columns=['a', 'b', 'c'])
print(df)

   a  b  c
0  0  1  2
1  3  4  5
2  6  7  8

df['average'] = ''
df['average'][0] = df['a'].mean()
print(df)

   a  b  c average
0  0  1  2       3
1  3  4  5        
2  6  7  8  

答案 2 :(得分:2)

分配一个系列,这样更干净。

df['average'] = pd.Series(df['a'].mean(), index=df.index[[0]])

或者更好的是分配loc

df.loc[df.index[0], 'average'] = df['a'].mean().item()

填写NaN很简单,您可以做到

df['average'] = df['average'].fillna('')
df
   a  b  c average
0  0  1  2       3
1  3  4  5        
2  6  7  8