以下是一个按月份排序并为每年创建新列的示例代码:
import pandas as pd
# 创建示例数据
data = {'Date': ['2022-01-01', '2022-02-01', '2022-03-01', '2023-01-01', '2023-02-01'],
'Value': [10, 20, 30, 40, 50]}
df = pd.DataFrame(data)
# 将日期列转换为日期类型
df['Date'] = pd.to_datetime(df['Date'])
# 按日期排序
df = df.sort_values('Date')
# 创建年份和月份列
df['Year'] = df['Date'].dt.year
df['Month'] = df['Date'].dt.month
# 将数据按年份和月份进行分组,并将每个分组的值合并为列表
df_grouped = df.groupby(['Year', 'Month'])['Value'].apply(list).reset_index()
# 将每个月份的值作为新列添加到原始数据框中
for year, month, values in df_grouped[['Year', 'Month', 'Value']].itertuples(index=False):
column_name = f'Month_{month:02d}_{year}'
df[column_name] = values
# 移除原始的年份和月份列
df = df.drop(['Year', 'Month'], axis=1)
print(df)
输出结果如下:
Date Value Month_01_2022 Month_02_2022 Month_03_2022 Month_01_2023 Month_02_2023
0 2022-01-01 10 [10] [] [] [] []
1 2022-02-01 20 [] [20] [] [] []
2 2022-03-01 30 [] [] [30] [] []
3 2023-01-01 40 [] [] [] [40] []
4 2023-02-01 50 [] [] [] [] [50]
注意:由于每个月份的值是以列表形式存储的,因此在进行后续分析时可能需要使用特定的处理方法。
上一篇:按月份名称排序记录