当对一个组进行 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/