Rob*_*988 7 python numpy dataframe pandas
假设我们有一个df:
A B
apple 1.0
apple 2.0
apple NA
orange NA
orange 7.0
melon 14.0
melon NA
melon 15.0
melon 16.0
Run Code Online (Sandbox Code Playgroud)
要替换NA,我们可以使用df ["B"].fillna(df ["B"].median()),但它会用"B"中的所有数据的中位数填充NA
有没有办法可以使用某个A的中位数来代替NA(如下所示):
A B
apple 1.0
apple 2.0
apple **1.5**
orange **7.0**
orange 7.0
melon 14.0
melon **15.0**
melon 15.0
melon 16.0
Run Code Online (Sandbox Code Playgroud)
谢谢!
在pandas中,您可以使用transform获取null-fill值:
>>> med = df.groupby('A')['B'].transform('median')
>>> df['B'].fillna(med)
0 1.0
1 2.0
2 1.5
3 7.0
4 7.0
5 14.0
6 15.0
7 15.0
8 16.0
Name: B, dtype: float64
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5820 次 |
| 最近记录: |