将熊猫行中的值重新格式化为关联的列

时间:2019-03-05 15:10:10

标签: python pandas

我有一个看起来像这样的数据框:

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函数,并将特定范围内的值添加到关联的列。问题是我的数据集非常大,要想针对每个可能的月/年组合逐行循环完成此运动,将需要很长时间。

是否存在使用遮罩或融化将数据重新格式化为我要查找的表的聪明方法?

1 个答案:

答案 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'])