本文介绍了 pandas 用团体价值填补北美的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
给出以下数据框:
import pandas as pd
import numpy as np
df = pd.DataFrame({'Site':['A','A','A','B','B','B','C','C','C'],
'Value':[np.nan,1,np.nan,np.nan,2,2,3,np.nan,3]})
df
Site Value
0 A NaN
1 A 1.0
2 A NaN
3 B NaN
4 B 2.0
5 B 2.0
6 C 3.0
7 C NaN
8 C 3.0
我想用该网站最常见的(中位数或均值)值来填充NaN值.理想的结果是:
I'd like to fill the NaN values with the most common (median or mean will do) value for the site. The desired result is:
Site Value
0 A 1.0
1 A 1.0
2 A 1.0
3 B 2.0
4 B 2.0
5 B 2.0
6 C 3.0
7 C 3.0
8 C 3.0
提前谢谢!
更新:这很近,但是没有雪茄:
Update: This is close, but no cigar:
df['Value']=df.groupby(['Site'])['Value'].fillna(min)
导致...
Site Value
0 A <function amax at 0x108cf9048>
1 A 1
2 A <function amax at 0x108cf9048>
3 B <function amax at 0x108cf9048>
4 B 2
5 B 2
6 C 3
7 C <function amax at 0x108cf9048>
8 C 3
推荐答案
您可以使用transform
作为
df['Value'] = df.groupby('Site').transform(lambda x: x.fillna(x.mean()))
Site Value
0 A 1
1 A 1
2 A 1
3 B 2
4 B 2
5 B 2
6 C 3
7 C 3
8 C 3
这篇关于 pandas 用团体价值填补北美的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!