只有一个组时,Groupby应用会产生不需要的转置

问题描述 投票:0回答:1

[Pandas在对一个组进行groupby-apply时有不一致的行为:

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

等于(1, 3)

while

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

等于(3, )

当groupby变量中只有一个唯一值时,产生的Serie将根据我的期望进行转置。

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

python pandas pandas-groupby
1个回答
0
投票

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

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

请参见文档here

© www.soinside.com 2019 - 2024. All rights reserved.