要将pandas DataFrame按月、周、日进行分组,可以使用resample()和groupby()函数。需要注意的是,这两个函数的行为是不同的。
以按月分组为例,使用resample()函数可以将DataFrame按月进行重采样,并返回重采样后的对象,最后使用groupby()函数对结果进行分组。示例代码如下:
import pandas as pd
import numpy as np
# 创建一个日期范围为2021年1月1日至2021年12月31日的DataFrame
date_rng = pd.date_range(start='1/1/2021', end='12/31/2021', freq='D')
df = pd.DataFrame(date_rng, columns=['date'])
# 将日期列作为索引
df['data'] = np.random.randint(0,100,size=(len(date_rng)))
df.set_index('date', inplace=True)
# 按月分组
df_month = df.resample('M').sum()
df_month_grouped = df_month.groupby(pd.Grouper(freq='M')).sum()
print(df_month_grouped)
上述代码中,首先创建了一个日期范围为2021年1月1日至2021年12月31日的DataFrame。然后将日期列作为索引,并添加一个随机值列。接下来使用resample()函数按月对DataFrame进行重采样,然后使用groupby()函数对结果进行分组,最后输出结果。
同样的,在按周和按日分组时也要注意使用resample()和groupby()函数的不同行为。
下一篇:按预加载的嵌套结构进行排序