python - 将日期从一列添加到另一列
问题描述
我有一个带有多个 ID 的 pandas 数据框,并且在其他列中我有两个日期列:“date1”和“date2”。我想将第二列的日期添加到第一列。这必须在数据框中的相同 ID 内完成。
我有的:
ID date1 date2 value
1 1/1/2013 5/1/2013 a
1 4/1/2013 16/1/2013 a
1 8/3/2014 31/12/2014 b
2 11/4/2013 15/5/2013 a
2 19/5/2016 18/1/2017 b
2 8/4/2017 18/5/2017 b
我想要的输出:
ID date1 value
1 1/1/2013 a
1 5/1/2013 a
1 4/1/2013 a
1 16/1/2013 a
1 8/3/2014 b
1 31/12/2014 b
2 11/4/2013 a
2 15/5/2013 a
2 19/5/2016 b
2 18/1/2017 b
2 8/4/2017 b
2 18/5/2017 b
谢谢你。
解决方案
您可以融化数据框:
df.melt(value_vars=['date1', 'date2'])
variable value
0 date1 1/1/2013
1 date1 4/1/2013
2 date1 8/3/2014
3 date1 11/4/2013
4 date1 19/5/2016
5 date1 8/4/2017
6 date2 5/1/2013
7 date2 16/1/2013
8 date2 31/12/2014
9 date2 15/5/2013
10 date2 18/1/2017
11 date2 18/5/2017
设置ID等:
df.rename(columns={'value': 'val'}).melt(id_vars=['ID', 'val'], value_vars=['date1', 'date2']).drop('variable', axis=1).set_index('ID')
ID
1 1/1/2013
1 4/1/2013
1 8/3/2014
2 11/4/2013
2 19/5/2016
2 8/4/2017
1 5/1/2013
1 16/1/2013
1 31/12/2014
2 15/5/2013
2 18/1/2017
2 18/5/2017
推荐阅读
- python - 显示以特定数字结尾的值 pandas
- python-requests - Pytest 在文件打开命令字符串断言上失败 - 测试这个的最佳方法是什么?
- c++ - 特征 c++ 三角形来自
- java - 如何用相同的逻辑重构三个方法?
- javascript - 如何从猫鼬数组中获取数组索引
- javascript - 从 webgl 的着色器中更新缓冲区
- polygon - 在folium中为多边形着色
- javascript - 在 Kotlin JS 中等待 fetch()?
- reactjs - 在带有 typescript 的 redux-thunk 中,调用 getState 永远不会返回
- ios - 使用标准外接显示器时如何修复苹果 Catalina 上的模糊字体