可以使用pandas中的groupby和pivot_table方法来解决这个问题。首先,将数据按照日期列进行分组并计算每个月中唯一项的数量。然后,使用pivot_table方法将唯一项的数量作为列进行展开。
代码示例:
import pandas as pd
# 创建示例数据
data = {'Date':['2020-01-01','2020-01-01','2020-02-01','2020-02-01','2020-03-01','2020-03-01'],
'Item':['A','B','A','C','B','D']}
df = pd.DataFrame(data)
# 将日期列转换为月和年两列
df['Month'] = pd.to_datetime(df['Date']).dt.strftime('%m')
df['Year'] = pd.to_datetime(df['Date']).dt.year
# 按月和年进行分组并计算唯一项的数量
grouped = df.groupby(['Month', 'Year'])['Item'].nunique().reset_index()
# 将唯一项的数量作为列进行展开
pivot = grouped.pivot_table(index='Year', columns='Month', values='Item')
# 输出结果
print(pivot)
输出结果为:
Month 01 02 03
Year
2020 2 2 2
其中,行为年份,列为月份,每个单元格为该月份中唯一项的数量。
上一篇:按月和年分组,但包括前一天。