你好,我有如下数据:
import pandas as pd
import numpy as np将数据加载到数据帧中
X = pd.read_csv('demo.csv')感兴趣的两栏是“类别”和“总计”栏:
Category Totals estimates
A 2777 0.43
B 1003 0.26
D NA 0.65
D 2638 0.17
B NA 0.74
C 2196 0.13
D 2630 0.91
A NA 0.39
C 2472 0.51
B 1090 0.12
C NA 0.64我可以找到类别A的中位数如下:
df.groupby('Category').Totals.median().loc['A']为实现以下目标,我需要帮助:
Totals列中缺失的值。我们会感谢你的帮助。
发布于 2020-04-08 06:51:59
df['Totals'] = df.Totals.fillna(df.groupby('Category').Totals.transform('median'))或者另一种方法是:
df['Totals'] = (df.set_index('Category').Totals
.fillna(df.groupby('Category').Totals.median()).values)print(df)
Category Totals estimates
0 A 2777.0 0.43
1 B 1003.0 0.26
2 D 2634.0 0.65
3 D 2638.0 0.17
4 B 1046.5 0.74
5 C 2196.0 0.13
6 D 2630.0 0.91
7 A 2777.0 0.39
8 C 2472.0 0.51
9 B 1090.0 0.12
10 C 2334.0 0.64
发布于 2020-04-08 06:51:52
将GroupBy.transform与median一起用于与原始值相同大小的Series,因此可以用Series.fillna替换缺少的值
df.Totals = df.Totals.fillna(df.groupby('Category').Totals.transform('median'))具有lambda函数的替代解决方案:
df.Totals = df.groupby('Category').Totals.transform(lambda x: x.fillna(x.median()))print (df)
Category Totals estimates
0 A 2777.0 0.43
1 B 1003.0 0.26
2 D 2634.0 0.65
3 D 2638.0 0.17
4 B 1046.5 0.74
5 C 2196.0 0.13
6 D 2630.0 0.91
7 A 2777.0 0.39
8 C 2472.0 0.51
9 B 1090.0 0.12
10 C 2334.0 0.64https://stackoverflow.com/questions/61094832
复制相似问题