python - 如何将单个日期转换为 Pandas 的一个日期列
问题描述
我有一个熊猫数据框,每天作为一列。我想将日期转换为单个数据列以执行一些分析。我尝试在很多地方搜索,但没有一个人谈论这种情况。
Product_ID 1/22/2020 1/23/2020 1/24/2020 1/25/2020 1/26/2020
ABC 1 3 2 3 5
ABD 2 1 2 2 5
ABC 0 1 0 3 4
ABD 1 1 1 3 8
ABC 3 0 0 3 4
ABE 6 2 2 1 5
我正在寻找的输出是:
Date ABC ABD ABE
1/22/2020 4 3 6
1/23/2020 7 2 2
1/24/2020 2 3 2
1/25/2020 9 5 1
1/26/2020 13 13 5
它正在添加重复列的数据。
编辑
对 Product_ID 进行分组确实让我得到了每个日期的每个产品的总和,但我仍然无法将日期提取为不同的“日期”列。
解决方案
如果您的初始数据框如下所示:
data = {
'Product_ID': {0: 'ABC', 1: 'ABD', 2: 'ABC', 3: 'ABD', 4: 'ABC', 5: 'ABE'},
'1/22/2020': {0: 1, 1: 2, 2: 0, 3: 1, 4: 3, 5: 6},
'1/23/2020': {0: 3, 1: 1, 2: 1, 3: 1, 4: 0, 5: 2},
'1/24/2020': {0: 2, 1: 2, 2: 0, 3: 1, 4: 0, 5: 2},
'1/25/2020': {0: 3, 1: 2, 2: 3, 3: 3, 4: 3, 5: 1},
'1/26/2020': {0: 5, 1: 5, 2: 4, 3: 8, 4: 4, 5: 5}
}
df = pd.DataFrame(data)
print(df)
Product_ID 1/22/2020 1/23/2020 1/24/2020 1/25/2020 1/26/2020
0 ABC 1 3 2 3 5
1 ABD 2 1 2 2 5
2 ABC 0 1 0 3 4
3 ABD 1 1 1 3 8
4 ABC 3 0 0 3 4
5 ABE 6 2 2 1 5
正如@ Quang Hoang 在上面的评论中指出的那样,您可以对数据进行分组。并获取Date
列,.reset_index()
并将.rename()
旧索引列添加到Date
. 如果需要,您还可以重命名列轴。代码如下:
df_new = df\
.groupby('Product_ID').sum().T\
.reset_index()\
.rename(columns={'index': 'Date'})\
.rename_axis(None, axis='columns')
print(df_new)
Date ABC ABD ABE
0 1/22/2020 4 3 6
1 1/23/2020 4 2 2
2 1/24/2020 2 3 2
3 1/25/2020 9 5 1
4 1/26/2020 13 13 5
推荐阅读
- docker - 在批处理脚本中使用 Bamboo 变量
- modelica - 生成两个具有不同采样周期的随机时间依赖变量
- php - preg_match - 肯定有更好的方法来搜索这些字符
- java - RxJava 将错误从 onError 传播到回调的父级
- angular - 无法使用 ANT Design NG-ZORRO;在“@angular/core”中找不到导出“ɵɵinject”
- codemirror - 为 CodeMirror 编写测试
- javascript - 如何向上滚动到一个元素并单击硒?
- javascript - 功能组件中 useEffect() 中的 useState()
- flutter - 如何制作从中心开始的listview.builder builder?
- generics - 接口之间的 Kotlin 多重继承