我有一个数据帧有4列(A,B,C,D)。 D有一些NaN条目。我想用具有相同A,B,C值的D的平均值填充NaN值。例如,如果A,B,C,D的值分别为x,y,z和Nan,那么我希望将NaN值替换为D的平均值,其中A ,B,C分别是x,y,z。如何在pandas中输出groupby输出?
1
A
回答
4
我想你需要:
df.D = df.groupby(['A','B','C'])['D'].apply(lambda x: x.fillna(x.mean()))
样品:
df = pd.DataFrame({'A':[1,1,1,3],
'B':[1,1,1,3],
'C':[1,1,1,3],
'D':[1,np.nan,3,5]})
print (df)
A B C D
0 1 1 1 1.0
1 1 1 1 NaN
2 1 1 1 3.0
3 3 3 3 5.0
df.D = df.groupby(['A','B','C'])['D'].apply(lambda x: x.fillna(x.mean()))
print (df)
A B C D
0 1 1 1 1.0
1 1 1 1 2.0
2 1 1 1 3.0
3 3 3 3 5.0
2
链接复制这个问题作进一步的信息: Pandas Dataframe: Replacing NaN with row average
做在提到的另一个建议方式链接在转置上使用简单的填充物: df.T.fillna(df.mean(axis=1)).T
1
df['D'].fillna(df.groupby(['A','B','C'])['D'].transform('mean'))
将快于apply
In [2400]: df
Out[2400]:
A B C D
0 1 1 1 1.0
1 1 1 1 NaN
2 1 1 1 3.0
3 3 3 3 5.0
In [2401]: df['D'].fillna(df.groupby(['A','B','C'])['D'].transform('mean'))
Out[2401]:
0 1.0
1 2.0
2 3.0
3 5.0
Name: D, dtype: float64
In [2402]: df['D'] = df['D'].fillna(df.groupby(['A','B','C'])['D'].transform('mean'))
In [2403]: df
Out[2403]:
A B C D
0 1 1 1 1.0
1 1 1 1 2.0
2 1 1 1 3.0
3 3 3 3 5.0
详细
In [2396]: df.shape
Out[2396]: (10000, 4)
In [2398]: %timeit df['D'].fillna(df.groupby(['A','B','C'])['D'].transform('mean'))
100 loops, best of 3: 3.44 ms per loop
In [2397]: %timeit df.groupby(['A','B','C'])['D'].apply(lambda x: x.fillna(x.mean()))
100 loops, best of 3: 5.34 ms per loop
相关问题
- 1. 如何在Scalding中输出输出
- 2. 确保GROUPBY输出型
- 3. LaTeX输出的Python Pandas中的Midrule
- 4. 如何在python中输出输入
- 5. 如何在PHP中跳出输出
- 6. 如何在python中不输出任何输出
- 7. 输出GROUPBY到CSV文件熊猫
- 8. 使用groupby和groupby.size()的输出
- 9. 分析大熊猫GROUPBY输出
- 10. 如何用输出颜色输出()
- 11. 如何输出
- 12. 如何输出
- 13. pandas groupby-apply行为,返回一个Series(不一致的输出类型)
- 14. 如何在C#/ .NET中捕获二进制输出输出
- 15. 如何防止在Keras中输出predict_proba()输出?
- 16. 如何在缓冲区控制台输出中输出?
- 17. 如何在gensim word2vec中访问输出嵌入(输出向量)?
- 18. 如何在php中输出shell命令的输出?
- 19. R程序输出:如何在输出中包含R标识?
- 20. 如何在JSON文件中输出JQ的输出行号
- 21. Groupby在Pandas
- 22. 如何在图中绘制pandas groupby值?
- 23. 输出的熊猫groupby与cumprod没有显示groupby列
- 24. 如何在python上输出?
- 25. 如何输出Qt中
- 26. 如何输出tRESTClient
- 27. 如何总输出
- 28. 如何输出unicode?
- 29. 如何输出php?
- 30. 输出在java中
如果我或另一种答案是有帮助的,不要忘了[接受](HTTP://meta.stackexchange .com/a/5235/295067) - 点击答案旁边的复选标记('✓'),将其从灰色变为填充。谢谢。 – jezrael