簡體   English   中英

對 df 的 nan 值的不同處理

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM