python - 当只有一组时,Groupby apply 会进行不需要的转置

标签 python pandas pandas-groupby

当对一个组进行 groupby-apply 时,Pandas 的行为不一致:

(
    pd.DataFrame({'c1': [0, 0, 0],
                  'c2': [1, 2, 3]})
    .groupby('c1')
    .apply(lambda df: df['c2']).shape
)

等于(1, 3)

同时

(
    pd.DataFrame({'c1': [0, 0, 1],
                  'c2': [1, 2, 3]})
    .groupby('c1')
    .apply(lambda df: df['c2']).shape
)

等于(3, )

当 groupby 变量中只有一个唯一值时,结果 Serie 会从我的预期中转置。

我需要一致的行为:无论组数如何,行数都必须保持在 3。

最佳答案

当您按只有一个值的列分组时,您可以在 .groupby(...) 中指定 squeeze=True,如下所示:

(
    pd.DataFrame({'c1': [0, 0, 0], 
                  'c2': [1, 2, 3]})
    .groupby('c1', squeeze=True)
    .apply(lambda df: df['c2']).shape
)

参见文档 here .

关于python - 当只有一组时,Groupby apply 会进行不需要的转置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62102565/

相关文章:

javascript - 服务器端或 Javascript 计算?

python - 根据日期范围按类别计算总发生次数和发生次数

python - Pandas:如何在 groupby 对象上使用自定义应用函数返回多列

python - 读取目录和子目录中的所有 json 文件和文件内容

python - 如何使用 Urllib2 更有效地抓取?

python - 在Python中替换数据框中的值

Python - 将日期时间列转换为秒

python - 如何根据列中的列表元素对数据框进行分组

python - Pandas :按均值分组后的条件切片

javascript - 在 AngularJS $http GET 中传递变量?