python - 如何将多列及其标题转换为行
问题描述
我有一个包含 28 列的数据框,其中 27 个是日期时间列,其中 1 个是 ID 列。我需要将数据集转换为 3 个总列,其中有一个数据时间列,第二个列具有从中派生日期时间的原始标题,第三列具有派生日期时间的原始 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
我的理解是这个任务可以用 pandas 来完成melt
,但是用 27 个日期时间列加上一个 ID 列是否可行?
这么多维度如何完成这个任务?
解决方案
使用熔体:
df_melt=df.melt(id_vars='ID',value_vars=['Buy','Sell','Hold'],var_name='Activity',value_name='Date')
您还可以使用 '_c' 将 27 列连字符连接起来,例如然后创建一个类似于
list=[c for c in df if c.endwith('_c')] 并在 melt 函数中引用列表
推荐阅读
- java - 使用 session-data-redis @Autowired FindByIndexNameSessionRepository 运行错误
- python - 如何取出索引而不是字符串中的所有字符?
- python - 带有 np.intc 的 Python 范围
- python - 使用 pywinauto 提取标题名称
- haskell - Haskell 和 PureScript 中的默认类型类实例
- r - 在ggplot2中向具有多个变量的直方图添加密度线
- sql - 基于查询结果的postgres中的递归函数
- java - 以偏移格式解析时间戳
- java - 如何使片段背景透明?
- java - 使用3个类实现程序错误