[英]Pandas ignores dropna=False with Categorical columns in groupby()
[英]Pandas groupby dropna=False does not work for apply
假設我有以下數據框。
df = pd.DataFrame({'a':[None,None,None], 'b':[1,1,2], 'c': [1,1,3], 'd': [1,1,1]})
df.groupby(['a', 'b', 'c'], dropna=True).d.sum()
=> Series([], Name: d, dtype: int64)
df.groupby(['a', 'b', 'c'], dropna=False).d.sum()
=> a b c
NaN 1 1 2
2 3 1
Name: d, dtype: int64
dropna 標志上的輸出符合預期。
現在,我定義了一個要應用的自定義函數。
def _is_outlier(s):
lower_limit = s.mean() - (s.std() * 2)
upper_limit = s.mean() + (s.std() * 2)
return ~s.between(lower_limit, upper_limit)
df.groupby(['a', 'b', 'c'], dropna=False).d.apply(_is_outlier)
=> Series([], Name: d, dtype: bool)
df.groupby(['a', 'b', 'c'], dropna=True).d.apply(_is_outlier)
=> Series([], Name: d, dtype: bool)
兩者都返回空系列。 看起來 dropna 對於應用功能沒有按預期工作。
有人知道這個問題的解決方法嗎?
謝謝,
它會解決它使其成為df然后重置索引嗎?
pd.DataFrame(df.groupby(['a', 'b', 'c'], dropna=False).d.sum()).reset_index()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.