在对具有相同索引名的行进行分组而忽略Nan时,仅使用DataFrame中每一行的特定值的平均值?

时间:2018-10-08 03:18:52

标签: python pandas numpy dataframe

如果我有一个DataFrame要在其中将具有相同索引名称的行分组,请说:

  a   b   c
c 2   1   -
c nan 2   -
d 4   3   -
e 5   4   -
d 6   5   -

我想合并具有相同列名的行,同时取它们在a列和b列中的平均值。这样df就会变成:

  a  b 
c 2  1.5 
d 5  4
e 5  4

如果我这样做:

averaging = df.groupby(["Index"])[['a', 'b']].mean()

(“索引”是为行设置的名称)

那行得通,只是它不会忽略nan。因此,我得到的不是我想要的数据框:

  a   b
c nan 1.5
d 5   4
e 5   4

1 个答案:

答案 0 :(得分:0)

您可以将meanlevel=0一起使用

pd.to_numeric(df.a,errors='coerce').mean(level=0)
Out[438]: 
c    2.0
d    5.0
e    5.0
Name: a, dtype: float64

使用replace

,nan也不是NaN。
df=df.replace('nan',np.nan)