我有一个 dataframe
,我想对行和列进行平均并按 Person
分组。
通常我可以做 .mean()
和 .mean(axis=1)
,但是,我的数据有几个 NaN
值,所以此方法对具有 NaN
值
My code:
import pandas as pd
import numpy as np
df = pd.DataFrame(data=[[1,2,np.nan, 'Person A'],
[1,2,3, 'Person B'],
[2,np.nan,5,'Person B'],
[4,5,7, 'Person A']],
columns=['A', 'B','C', 'Person'])
df = df.groupby('Person').mean()
print df.mean(axis=1)
输出:
Person
Person A 4.333333
Person B 2.500000
期望的输出:
Person
Person A 3.8
Person B 2.6
最佳答案
df.set_index('Person').stack().groupby(level=0).mean().to_frame()
输出:
Person
Person A 3.8
Person B 2.6
dtype: float64
或
df.melt(id_vars='Person').groupby('Person')['value'].mean().to_frame()
输出:
Person
Person A 3.8
Person B 2.6
Name: value, dtype: float64
关于python - Pandas 在groupby中表示跨行和列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44502713/