python - 在 Pandas 中翻转数据框并将一列的值保留为新行的值
问题描述
我目前有一个数据框,当我读到它时,它看起来像这样:
日期 | 国家 | 一个 | 乙 | C |
---|---|---|---|---|
2020 年 1 月 1 日 | AFG | 0 | 1 | 5 |
2020 年 1 月 2 日 | AFG | 2 | 5 | 0 |
2020 年 1 月 3 日 | AFG | 1 | 4 | 1 |
... | ... | ... | ... | ... |
2020 年 1 月 1 日 | 美国 | 2 | 3 | 7 |
2020 年 1 月 2 日 | 美国 | 4 | 5 | 6 |
我想将其转换为下面的表格,其中国家成为行的索引,日期替换列,A 列的值继续填充每个国家的日期各自的值。
国家 | 2020 年 1 月 1 日 | 2020 年 1 月 2 日 | 2020 年 1 月 3 日 | ... | 2021 年 4 月 25 日 |
---|---|---|---|---|---|
AFG | 0 | 2 | 1 | ... | 5 |
美国 | 2 | 4 | 9 | ... | 15 |
我之前尝试过使用 group-by,但似乎没有任何东西以上面显示的方式工作。我忘记了命令还是有什么办法可以做到?
解决方案
你可以这样做:
尝试
pivot_table
获得所需的。用于
rename_axis
删除轴名称。最后通过 重置索引
reset_index()
。
df = df.pivot_table(index='Country', columns='Date', values='A', fill_value=0).rename_axis(None, axis=1).reset_index()
输出:
Country 01/01/2020 01/02/2020 01/03/2020
0 AFG 0 2 1
1 USA 2 4 0
推荐阅读
- python - Python - 从文本文件到字典的邻接列表
- ruby-on-rails - 使用 CarrierWave 上传多个文件作为数据库中的单个记录
- kotlin - Spring Cloud Stream Kotlin 消费者问题
- javascript - createReactionCollector 在 discord.js 中不起作用
- c# - 没有参数的构造函数,带有两个“新”关键字
- c# - Azure Durable Function:检测到多线程执行(使用默认示例代码)
- javascript - Three.js 将旋转添加到围绕枢轴的组
- c - 使用 void 指针更改结构的值
- android - 为 Android 编译 Swift
- postgresql - 做备份,每个数据库自定义格式,一个单元