从此数据帧创建多级列

问题描述 投票:0回答:1

这是我的数据框:

  data = {
          'names': ['Rose',' Rose', 'Tulip', 'Tulip', 'Lily'],
           'f': [10, 20, 5,15, 30],
           'h': [5, 8, 6, 12, 10],
           'date':['2023-01-01', '2023-02-01', '2023-02-01', '2023-03-01', '2023-04-01']
        }

我该如何创建这个?

              Rose          Tulip          Lily                   
              f  h        f        h        f        h
2023-01-01   10  5        0        0        0        0
2023-02-01   20  8        5        6        0        0
2023-03-01   0   0        15       12       0        0
2023-04-01   0   0        0         0       30       10
python pandas dataframe multi-level
1个回答
0
投票

我认为你想旋转数据:

data = {
    "names": ["Rose", "Rose", "Tulip", "Tulip", "Lily"],
    "f": [10, 20, 5, 15, 30],
    "h": [5, 8, 6, 12, 10],
    "date": ["2023-01-01", "2023-02-01", "2023-02-01", "2023-03-01", "2023-04-01"],
}

df = pd.DataFrame(data)
df = (
    df.pivot(index="date", columns=["names"], values=["f", "h"])
    .swaplevel(axis=1)
    .sort_index(axis=1)
    .fillna(0)
)
print(df)

打印:

names       Lily        Rose      Tulip      
               f     h     f    h     f     h
date                                         
2023-01-01   0.0   0.0  10.0  5.0   0.0   0.0
2023-02-01   0.0   0.0  20.0  8.0   5.0   6.0
2023-03-01   0.0   0.0   0.0  0.0  15.0  12.0
2023-04-01  30.0  10.0   0.0  0.0   0.0   0.0
© www.soinside.com 2019 - 2024. All rights reserved.