在对具有相同索引名的行进行分组并忽略Nan时,只对数据帧中每行的特定值取平均值?

2024-09-25 00:30:17 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我有一个数据框,其中我想对具有相同索引名的行进行分组,请说:

  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()

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

这是可行的,但它不会忽略nan。因此,我得到的不是我想要的数据帧,而是:

  a   b
c nan 1.5
d 5   4
e 5   4

Tags: 数据名称dfindexnanmean平均值groupby
1条回答
网友
1楼 · 发布于 2024-09-25 00:30:17

您可以将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)

相关问题 更多 >