country count
Argentina 3
Argentina 4
Argentina NaN
Wales 1
Wales 3
Wales NaN
Nan 值,我想最小化與 NaN 值共享相同國家的值。
輸出應該是:
Argentina 3
Argentina 4
Argentina 3
Wales 1
Wales 3
Wales 1
我嘗試了 bfill 方法,但沒有解決這個問題。謝謝你的幫助
uj5u.com熱心網友回復:
一種方法是使用map,groupby和fillna
map允許您通過索引進行匹配,當您創建一個 groupby 物件時,它默認創建一個索引 ( as_index=True),因此將其映射回您的主資料框非常簡單。
df['count'] = df['count'].fillna(
df['country'].map(df.groupby('country')['count'].min()))
print(df)
country count
0 Argentina 3.0
1 Argentina 4.0
2 Argentina 3.0
3 Wales 1.0
4 Wales 3.0
5 Wales 1.0
一種更簡單的方法是使用.transform它應用 groupby 操作而不修改索引
df['count'] = df['count'].fillna(
df.groupby('country')['count'].transform('min'))
country count
0 Argentina 3.0
1 Argentina 4.0
2 Argentina 3.0
3 Wales 1.0
4 Wales 3.0
5 Wales 1.0
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/456779.html
標籤:熊猫
上一篇:在Pythondash中轉換Y軸
下一篇:將多個二進制列轉換為交叉表
