簡體   English   中英

在 groupby 和過濾 pandas 之后填充na

[英]fillna after groupby and filter in pandas

我試圖在goupbyfilter pandas 之后填充 nan。 例如,我想按“標簽”分組並過濾是否有nan和沒有nan 如果兩個條件都滿足,我會用同一類別的值填充nan

這是我目前正在做的事情:

import pandas as pd
df = pd.DataFrame(data={'label':['a','a','b','b','c','c'],
                        'value':[nan,'a1','b1','b1',nan,nan]})

#I am trying to do
df.groupby('label')\
  .filter(lambda x:x.value.isna().values.any() and not x.value.isna().values.all())\
  .apply(lambda x:x.sort_values('value').value.ffill())

我使用sort_values因為我想把nan放在最后,這樣我就可以使用ffill()但是我得到一個錯誤,沒有軸名稱值。 我想知道哪里錯了。 還是有更好的方法來做到這一點? 以及如何將填充的數據分配給原始dataframe?

謝謝你的幫助。

我們可以做groupby然后只做fillna ,如果都是 NaN,它將保持 NaN

df.groupby('label').value.apply(lambda x : x.ffill().bfill())
0     a1
1     a1
2     b1
3     b1
4    NaN
5    NaN
Name: value, dtype: object

暫無
暫無

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

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