[英]different handling of nan values of a df
我有一個這樣的 df:
A B
0 1 5
1 1 7
2 NaN NaN
3 1 8
4 NaN NaN
5 NaN NaN
6 2 6
7 2 2
8 NaN NaN
9 NaN NaN
10 2 3
現在我想在事件中以不同於外部的方式填充 nan 值。 一個事件由 A 列標識並且具有相同的值(在我的示例中有事件 1 和 2)。 A 列應僅包含事件中的事件編號。 對於 B 列,應傳輸事件中的最后一個條目。 在事件之間,NaN 值應設置為“0”。
我嘗試ffill()
和fillna()
,但無法將其與我的條件相匹配。
預期結果:
A B
0 1 5
1 1 7
2 1 7
3 1 8
4 0 0
5 0 0
6 2 6
7 2 2
8 2 2
9 2 2
10 2 3
謝謝您的幫助:)
您可以將GroupBy.ffill
與由Series.mask
創建的輔助組一起使用,並通過回溯值進行比較以防止組之間省略值,最后將缺失值替換為0
和整數:
s = df.A.ffill()
g = df.A.mask(s.eq(df.A.bfill()), s)
df = df.groupby(g).ffill().fillna(0).astype(int)
print (df)
A B
0 1 5
1 1 7
2 1 7
3 1 8
4 0 0
5 0 0
6 2 6
7 2 2
8 2 2
9 2 2
10 2 3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.