簡體   English   中英

按 pandas dataframe 中的浮點值過濾列,然后填充

[英]Filter column by float value in pandas dataframe, and fill-forward

我有這個 dataframe:

    difer   length     
0   0.11          4
1   NaN           6
2   01_00532      54
3   NaN           32
4   NaN           12 
5   0.10          12
6   Nan           123 

我想用浮點值替換difer列中的所有其他值。 因此,將所有值更改為 0.11,直到下一個浮點值 (0.10),然后用 0.10 重復此操作。

   difer        length     
0   0.11          4
1   0.11          6
2   0.11          54
3   0.11          32
4   0.11          12 
5   0.10          12
6   0.10          123  

對於第一部分(過濾列),我發現了一個類似的問題來過濾浮點值

該人建議使用pd.to_numeric和 boolean 索引,但我不知道他為什么以這種形式df.SIC寫列名。 它對我不起作用:

df[pd.to_numeric(df.SIC, errors='coerce').isnull()]

對於第二部分(如何將所有值更改為 0.11 直到下一個浮點值(0.10)並用 0.10 重復),我不知道。

在您的列上使用pd.to_numericerrors='coerce'將用NaN填充所有非數值,最后使用ffill向前填充列。

df['difer'] = pd.to_numeric(df['difer'], errors='coerce').ffill()

Output

   difer  length
0   0.11       4
1   0.11       6
2   0.11      54
3   0.11      32
4   0.11      12
5   0.10      12
6   0.10     123

筆記:

通過df.diferdf['difer']訪問列沒有區別。 僅當您在列名中有空格時,這才會導致問題。 在這種情況下使用后者。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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