我有一只熊猫
DataFrame
'A'
和
'B'
,并且每个组中缺少一个元素。
df4 = pd.DataFrame({'Name' : ['A', 'A', 'A', 'A', 'B', 'B', 'B'],
'X' : [0, 0.5,1, np.nan, 1,np.nan,1]})
Name X
A 0.0
A 0.5
A 1.0
A nan
B 1.0
B nan
B 1.0
我想使用lambda函数来填充每个组缺少的数据
x.mean()
df4.groupby('Name')['X'].transform(lambda x: x.fillna(x.mean()))
0 0.0
1 0.5
2 1.0
3 0.5 <------ Filled as 0.5
4 1.0
5 1.0 <------ Filled as 1
6 1.0
如果我使用
x、 平均值()
1.5/3
哪个是
0.5
. B组也一样。
使用时的奇怪行为
x.std()
但是,如果我使用
x、 标准()
0
,
0.5
1.0
0.408
. 但是,lambda函数给出了以下输出。
df4.groupby('Name')['X'].transform(lambda x: x.fillna(x.std()))
0 0.0
1 0.5
2 1.0
3 0.5 <------ Filled as 0.5 instead of 0.4082
4 1.0
5 0.0 <------ Correct
6 1.0
有人能解释一下这种行为吗?0.5是从哪里来的?