我有一个包含28列的数据框,其中27个是日期时间列,其中1个是ID列。我需要将数据集转换为总共3列,其中有一列datatime列,第二列具有从中导出日期时间的原始标题,第三列具有从中获得日期时间的原始ID。
未转换的数据示例:
ID Buy Sell Hold
1 2/2/17 2/3/17 2/4/17
2 3/2/17 3/3/17 3/4/17
3 4/2/17 4/3/17 4/4/17
转换后的数据示例:
Date Activity ID
2/2/17 Buy 1
2/3/17 Sell 1
2/4/17 Hold 1
3/2/17 Buy 2
3/3/17 Sell 2
3/4/17 Hold 2
4/2/17 Buy 3
4/3/17 Sell 3
4/4/17 Hold 3
我的理解是,可以通过熊猫melt
来完成此任务,但是将27个datetime列与一个ID列结合使用是否可行?
我如何在这么多个维度上完成这项任务?
答案 0 :(得分:2)
使用融化:
df_melt=df.melt(id_vars='ID',value_vars=['Buy','Sell','Hold'],var_name='Activity',value_name='Date')
您还可以用'_c'连字符27列,然后创建类似于的列表
list = [如果c.endwith('_ c'),则为df中的c的c],并在melt函数中引用列表