python - 转置 pandas 数据框并垂直 append

标签 python pandas dataframe append pivot-table

我目前有一个 Pandas 数据框,df 像这样

df = pd.DataFrame({'Name': ['A','B','C'], 'Type': ['Car', 'Car', 'Truck'] , '01/01/1991, RED': [10, 26, 30], '01/02/1991, YELLOW': [11,15,5], '01/05/1991, BLUE':[5,8,20]})
Name | Type  | 01/01/1991, RED | 01/02/1991, YELLOW | 01/05/1991, BLUE  |
A    | Car   | 10              | 11                 | 5                 | 
B    | Car   | 26              | 15                 | 8                 | 
C    | Truck | 30              | 5                  | 20                | 

我正在寻找输出

Name | Date       | Type  | Color  | Number
A    | 01/01/1991 | Car   | RED    | 10
A    | 01/02/1991 | Car   | YELLOW | 11
A    | 01/05/1991 | Car   | BLUE   | 5
B    | 01/01/1991 | Car   | RED    | 26
B    | 01/02/1991 | Car   | YELLOW | 15
B    | 01/05/1991 | Car   | BLUE   | 8
C    | 01/01/1991 | Truck | RED    | 30
C    | 01/02/1991 | Truck | YELLOW | 5
C    | 01/05/1991 | Truck | BLUE   | 20

到目前为止,我能够调换表格并清理日期。但我不确定如何按照以下方式复制日期并设置颜色。对于这种情况,.pivot_table 或 .transpose() 会更好吗?任何见解都值得赞赏。

最佳答案

试试这个,有很多方法可以解决这个 reshape :

dfi = df.set_index(["Name", "Type"])
dfi.columns = dfi.columns.str.split(", ", expand=True).rename(['Date', 'Color'])
df_out = (
    dfi.stack([0, 1])
    .rename("Number")
    .reset_index()
)
df_out

输出:

  Name   Type        Date   Color  Number
0    A    Car  01/01/1991     RED    10.0
1    A    Car  01/02/1991  YELLOW    11.0
2    A    Car  01/05/1991    BLUE     5.0
3    B    Car  01/01/1991     RED    26.0
4    B    Car  01/02/1991  YELLOW    15.0
5    B    Car  01/05/1991    BLUE     8.0
6    C  Truck  01/01/1991     RED    30.0
7    C  Truck  01/02/1991  YELLOW     5.0
8    C  Truck  01/05/1991    BLUE    20.0

解释:

将“名称”和“类型”移动到索引中,用逗号和空格分割剩余列的列标题,以创建 MultiIndex 列标题。接下来,将两个级别堆叠到索引,然后进行一些重命名以根据需要创建列并重置索引。

关于python - 转置 pandas 数据框并垂直 append ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68968016/

相关文章:

python - 输入重复代码(Python)

python - 构造一个 df,使得范围内的每个数字在知道属于 'A' 的范围值的开始和结束时都获得分配的值 'A'

r - 在R中找到最大值的索引

r - 根据R中特定字符分隔的行中的数据创建新列

pandas - 如何读取包含许多 CSV 文件的许多大型 .7z 文件?

python - 如何在Python中搜索字符串内带引号的子字符串?

python - 预分配一个无列表

python - 从 Pandas 系列中选择特定值

python - 在python进程之间共享资源

python - 删除具有少量列的重复项并对其他列求和