簡體   English   中英

groupby.apply() 的行為不一致

[英]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.

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