[英]Inconsistent behaviour of groupby.apply()
在執行df.groupby(...).apply(...)
時,當組數 > 1 或 = 1 時,操作的返回格式似乎不一致。它返回一個數據幀而不是只有一組時的系列。
df = pd.DataFrame({'A': ['a', 'a', 'a', 'a'], 'B': range(4), 'C': [1, 2, 3, 4]})
A B C
0 a 0 1
1 a 1 2
2 a 2 3
3 a 3 4
df.groupby('A').apply(lambda x: x['B']*x['C'].shift())
A 0 1 2 3
a NaN 1.0 4.0 9.0
有多個組:
df = pd.DataFrame({'A': ['a', 'a', 'a', 'a','b'], 'B': range(5), 'C': [1, 2, 3, 4, 5]})
A B C
0 a 0 1
1 a 1 2
2 a 2 3
3 a 3 4
4 b 4 5
df.groupby('A').apply(lambda x: x['B']*x['C'].shift())
A
a 0 NaN
1 1.0
2 4.0
3 9.0
b 4 NaN
我想在這兩種情況下都獲得一個系列,或者至少讓它保持一致而不必檢查是否只有一個組。 有一些線程提到了這個問題,但我找不到任何解決方法。
解決方案是在 groupby 中添加squeeze=True
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.