首页 > 解决方案 > 如何在熊猫数据框中交换行和列

问题描述

我正在使用 pandas 库读取 csv 文件。我想交换行和列,但主要问题是在状态列中..在此列中每三行之后有重复值..所以转置正在将所有行值转换为列...但是我只是只需要三列...即每个日期的已确认、已恢复、已死亡.. 请找到我显示示例输入和示例输出的附件。 在此处输入图像描述

标签: pandas

解决方案


这是一个使用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

推荐阅读