[英]fillna after groupby and filter in pandas
我試圖在goupby
和filter
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.