根据上的Pandas文档https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.groupby.html
排序:bool,默认True
对组密钥进行排序。关闭此选项可获得更好的性能。请注意,这不会影响每组中观察结果的顺序。Groupby保留每组中的行顺序。
这并没有真正描述当sort=False时,组的顺序是否是随机的,或者在groupby之前保留原始顺序。对火星的行为有什么见解吗?
以下是它的含义示例:
数据:
import pandas as pd
df = pd.DataFrame(data={"cost": [30, 29, 40, 45, 240, 200, 220, 180, 150, 130],
"date": [ "2017-11-01", "2016-12-01", "2016-11-01",
"2017-12-01", "2018-11-30", "2018-12-01",
"2019-11-30", "2019-12-30", "2020-11-30",
"2020-12-30"]})
df["date"] = pd.to_datetime(df["date"])
df.set_index("date", inplace=True)
print(df)
# cost
#date
#2017-11-01 30
#2016-12-01 29
#2016-11-01 40
#2017-12-01 45
#2018-11-30 240
#2018-12-01 200
#2019-11-30 220
#2019-12-30 180
#2020-11-30 150
#2020-12-30 130
请注意,第一个日期是2017年。
与sort=False
2017仍然是第一排:
df.groupby([lambda x: x.year], sort=False).count()
#Out:
# cost
#date
#2017 2
#2016 2
#2018 2
#2019 2
#2020 2
由于默认为sort=True
,2017不再是第一个,因为日期已排序:
df.groupby([lambda x: x.year]).count()
#Out:
# cost
#date
#2016 2
#2017 2
#2018 2
#2019 2
#2020 2
在不进行排序(sort=False
(的情况下,组按行中首次出现的顺序排列。通过排序(sort=True
或未给出(,组将按照Python排序进行排序,即按数字、字母顺序等。