scr*_*lex 39 python dataframe pandas
我有一个'DataFrame`偶尔有缺失值,看起来像这样:
Monday Tuesday Wednesday
================================================
Mike 42 NaN 12
Jenna NaN NaN 15
Jon 21 4 1
Run Code Online (Sandbox Code Playgroud)
我想新添加column到我的数据帧在那里我会计算所有的平均值columns为每row.
意思,因为Mike,我需要
(df['Monday'] + df['Wednesday'])/2,但因为Jenna,我只是使用df['Wednesday amt.']/1
有没有人知道解决由于缺失值导致的这种变化并计算平均值的最佳方法?
Ste*_*fan 92
你可以简单地说:
df['avg'] = df.mean(axis=1)
Monday Tuesday Wednesday avg
Mike 42 NaN 12 27.000000
Jenna NaN NaN 15 15.000000
Jon 21 4 1 8.666667
Run Code Online (Sandbox Code Playgroud)
因为.mean()默认情况下忽略缺失值:请参阅docs.
要选择子集,您可以:
df['avg'] = df[['Monday', 'Tuesday']].mean(axis=1)
Monday Tuesday Wednesday avg
Mike 42 NaN 12 42.0
Jenna NaN NaN 15 NaN
Jon 21 4 1 12.5
Run Code Online (Sandbox Code Playgroud)
替代方案 - 使用 iloc(也可以在此处使用 loc):
df['avg'] = df.iloc[:,0:2].mean(axis=1)
Run Code Online (Sandbox Code Playgroud)
复活这个问题是因为所有以前的答案当前都会打印警告。
在大多数情况下,使用assign():
df = df.assign(avg=df.mean(axis=1))
Run Code Online (Sandbox Code Playgroud)
对于特定的列,可以按名称输入:
df = df.assign(avg=df.loc[:, ["Monday", "Tuesday", "Wednesday"]].mean(axis=1))
Run Code Online (Sandbox Code Playgroud)
或者按索引,使用比最后一个所需索引多一个的索引,因为它不包含在内:
df = df.assign(avg=df.iloc[:,0:3]].mean(axis=1))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
60345 次 |
| 最近记录: |