如何在熊猫数据框中交换行和列

时间:2021-02-21 13:19:49

标签: pandas

我正在使用 Pandas 库读取 csv 文件。我想交换行和列,但主要问题是在状态列中..在此列中每三行之后有重复的值..所以转置是将所有行值转换为列......但就地我只是只想要三列......即每个日期的确认、恢复、死亡……请找到我显示样本输入和样本输出的附件。 enter image description here

1 个答案:

答案 0 :(得分:0)

这是使用 stack()unstack()

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