python - groupby.apply() 的不一致行为

标签 python pandas

当执行 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

关于python - groupby.apply() 的不一致行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52878592/

相关文章:

python - 检查是否填充了多行,如果没有填充所有值

python - 如何配置请求超时触发 "connection cannot be established"错误

python - 是否可以指定之前的目录python?

python - Django - 列中的空值违反了 Django Admin 中的非空约束

python - pandas DataFrame 爆炸列内容

python - csv中的列操作[python]

python - 对多索引 Pandas 数据框中的行求和

python xlrd - 从工作表中检索列索引

python - Pandas:迭代两个不同的列

python - 求 Python pandas 中某些值的累积和