gpt4 book ai didi

python - Pandas 如何使用 dt 按月和年分组

转载 作者:行者123 更新时间:2023-12-01 00:26:50 24 4
gpt4 key购买 nike

我只是想知道如何使用 pandas.series.dt 按年份和月份进行分组。

下面的代码仅按年份分组,但我如何添加进一步的过滤器以按月分组。

Data = {'Date':['21.10.1999','30.10.1999','02.11.1999','17.08.2000','09.10.2001','14.07.2000'],'X': [10,20,30,40,50,60],'Y': [5,10,15,20,25,30]}

df = pd.DataFrame(Data)

#Convert to pandas date time
df['Date'] = pd.to_datetime(df['Date'])

#Obtain dataframe dtypes
print(df.dtypes)

print(df)
print(df.groupby(df['Date'].dt.year).sum())

最佳答案

am just wondering how to group by both year and month using pandas.series.dt.

您可以通过Series.dt.yearSeries.dt.monthrename 更改为 groupby 后,不需要新列:

print(df.groupby([df['Date'].dt.year.rename('y'), df['Date'].dt.month.rename('m')]).sum())
X Y
y m
1999 2 30 15
10 30 15
2000 7 60 30
8 40 20
2001 9 50 25

另一种解决方案:

如果使用DataFrame.resampleGrouper然后添加所有缺失的日期时间(应该是好的还是不好的):

print(df.resample('MS', on='Date').sum())
<小时/>
print(df.groupby(pd.Grouper(freq='MS', key='Date')).sum())

或者通过 Series.dt.to_period 将日期时间转换为月份周期:

print(df.groupby(df['Date'].dt.to_period('m')).sum())
X Y
Date
1999-02 30 15
1999-10 30 15
2000-07 60 30
2000-08 40 20
2001-09 50 25

关于python - Pandas 如何使用 dt 按月和年分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58517815/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com