我有一个看起来像这样的数据框:
ID1 ID2 Issues Value1 Value2 IssueDate
1 1 1 56.85490855 9.489650847 02/12/2015
1 1 2 89.55441203 23.60227363 07/02/2015
1 2 1 21.8456428 23.37353082 01/10/2015
2 2 1 55.10795933 1.928443984 13/08/2015
2 2 2 10.22459873 24.44298882 07/04/2015
4 1 1 55.29748656 6.308424035 19/02/2015
,我希望它是多个数据帧(这是Value1,但请想象第二个为2),如下所示:
Value 1
2015_1 2015_2 2015_3 2015_4 2015_5 2015_6 2015_7I 2015_8 2015_9 2015_10 2015_11 2015_12
ID1 ID2
1 1 89.55441203 56.85490855
1 2 21.8456428
2 2 10.22459873 55.10795933
4 1 55.29748656
我知道如何执行此操作的唯一方法是使用lambda函数,并将特定范围内的值添加到关联的列。问题是我的数据集非常大,要想针对每个可能的月/年组合逐行循环完成此运动,将需要很长时间。
是否存在使用遮罩或融化将数据重新格式化为我要查找的表的聪明方法?
答案 0 :(得分:1)
我想您正在寻找类似的东西
df.IssueDate = pd.to_datetime(df.IssueDate)
df['Date'] = df.IssueDate.dt.year.astype(str) + '_' + df.IssueDate.dt.month.astype(str)
pd.pivot_table(df[['ID1', 'ID2', 'Value1', 'Date']], columns='Date', index=['ID1', 'ID2'])