pandas groupby()按分组列返回结果的顺序一致性问询
Pandas groupby 分组顺序问题解答
1. groupby() 是否总是生成与原分组列顺序一致的DataFrame?
不是,这取决于sort参数的设置:
- 默认情况下(
sort=True),groupby会对分组键做升序排序,结果的分组顺序是排序后的顺序,和原数据中分组列的出现顺序无关。 - 如果设置
sort=False,分组结果的顺序会和原数据中分组键首次出现的顺序保持一致。
2. 按id分组后调用first(),结果是否始终与原id列顺序一致?
同样不是,核心逻辑和上述一致:
- 默认
sort=True时,结果的id顺序是升序排列,和原数据里id的出现顺序无关。 - 当设置
sort=False时,结果的id顺序会和原数据中每个id第一次出现的顺序一致(注意是去重后的首次出现顺序,不是原数据所有id行的顺序)。
举个直观的代码例子:
import pandas as pd df = pd.DataFrame({'id': [3, 1, 2, 1, 3], 'value': [10, 20, 30, 40, 50]}) # 默认sort=True,结果按id升序排列 print(df.groupby('id')['value'].first()) # 输出: # id # 1 20 # 2 30 # 3 10 # Name: value, dtype: int64 # 设置sort=False,结果按id首次出现顺序排列 print(df.groupby('id', sort=False)['value'].first()) # 输出: # id # 3 10 # 1 20 # 2 30 # Name: value, dtype: int64
内容的提问来源于stack exchange,提问作者nirkov
相关产品推荐
相关产品推荐

