pandas - 如何在熊猫数据框中交换行和列
问题描述
我正在使用 pandas 库读取 csv 文件。我想交换行和列,但主要问题是在状态列中..在此列中每三行之后有重复值..所以转置正在将所有行值转换为列...但是我只是只需要三列...即每个日期的已确认、已恢复、已死亡.. 请找到我显示示例输入和示例输出的附件。 在此处输入图像描述
解决方案
这是一个使用stack()
andunstack()
import random
s = 10
d = pd.date_range("01-Jan-2021", periods=s)
cols = ["TT","AN","AP"]
df = pd.DataFrame([{**{"Date":dd, "Status":st}, **{c:random.randint(1,50) for c in cols}}
for dd in d
for st in ["Confirmed","Recovered","Deceased"]])
df.set_index(["Date","Status"]).rename_axis(columns="State").stack().unstack(1)
前
Date Status TT AN AP
0 2021-01-01 Confirmed 5 44 17
1 2021-01-01 Recovered 44 5 48
2 2021-01-01 Deceased 27 3 24
3 2021-01-02 Confirmed 33 14 38
4 2021-01-02 Recovered 21 15 6
5 2021-01-02 Deceased 15 37 8
6 2021-01-03 Confirmed 15 20 36
7 2021-01-03 Recovered 18 19 44
8 2021-01-03 Deceased 37 22 1
9 2021-01-04 Confirmed 16 35 37
10 2021-01-04 Recovered 30 45 49
11 2021-01-04 Deceased 35 7 18
后
Status Confirmed Deceased Recovered
Date State
2021-01-01 TT 5 27 44
AN 44 3 5
AP 17 24 48
2021-01-02 TT 33 15 21
AN 14 37 15
AP 38 8 6
2021-01-03 TT 15 37 18
AN 20 22 19
AP 36 1 44
2021-01-04 TT 16 35 30
AN 35 7 45
AP 37 18 49
推荐阅读
- python - 在 Pandas 中使用 SQLAlchemy 清理数据库连接
- ruby-on-rails-4 - 模型属性不是持久化的轨道
- mysql - 在多个表中查找包含电子邮件的所有行
- javascript - 如何在实时聊天或机器人聊天中启用音频音效?
- authentication - NetSuite SuiteTalk 令牌身份验证:登录尝试无效
- javascript - 未捕获(承诺中)错误:意外的令牌 < 更新打字稿类型定义
- javascript - 在三个js中用颜色填充线条之间的区域
- python - 为什么,在浮点运算中,0.9999999999999999 !=1 但 0.9999999999999999 + 1 == 2
- php - 为前 3 个帖子添加单独的课程 - Wordpress
- spring - 不查询同一张表时如何使用@formula