我有一个输入框示例:

Name Date Score Target Difference
Jim 2023-10-09 9 12 3
Jim 2023-10-16 13 16 3
Andy 2023-10-09 7 7 0
Andy 2023-10-16 5 20 15

用于创建表的Python代码:

import pandas as pd
df = pd.DataFrame({'Name':["Jim","Jim","Andy", "Andy"], 'Date':['2023-10-09', '2023-10-16', '2023-10-09', "2023-10-16"], 'Score':["9","13","7", "5"], 'Target':["12","16","7", "20"], 'Difference':["3","3","0", "15"]})

我想按名称调换上表,并使行为Date、Score、Target和Difference.所需的输出表如下:

Date Category Jim Andy
2023-10-09 Score 9 7
Target 12 7
Difference 3 0
2023-10-16 Score 13 5
Target 16 20
Difference 3 15

我try 使用下面的代码这样做,但它没有产生所需的按日期和类别列进行转置的表分组.

df_2 =df.T 

Df_2生成以下输出,该输出颠倒了我不想要的"Date"列.

enter image description here

推荐答案

您可以先将"Score", "Target", "Difference"列合并为两个键值列,然后应用pivot:

df \
    .melt(
        id_vars=["Name", "Date"],
        value_vars=["Score", "Target", "Difference"],
        var_name="Category"
    ) \
    .pivot(
        index=["Date", "Category"],
        values="value",
        columns="Name"
    )

输出:

Name                  Andy Jim
Date       Category           
2023-10-09 Difference    0   3
           Score         7   9
           Target        7  12
2023-10-16 Difference   15   3
           Score         5  13
           Target       20  16

Python相关问答推荐

在IIS中运行的FastAPI-获取权限错误:[Win错误10013]试图以其访问权限禁止的方式访问插槽

使用pandas MultiIndex进行不连续 Select

获取Azure Pipelines以从pyproject.toml(而不是relevments_dev.文本)安装测试环境

将嵌套列表的字典转换为数据框中的行

使用多个性能指标执行循环特征消除

指示组内的rejected_time是否在creation_timestamp后5分钟内

从包含数字和单词的文件中读取和获取数据集

在Python中为变量的缺失值创建虚拟值

使用pandas、matplotlib和Yearbox绘制时显示错误的年份

Python:在类对象内的字典中更改所有键的索引,而不是仅更改一个键

线性模型PanelOLS和statmodels OLS之间的区别

连接两个具有不同标题的收件箱

韦尔福德方差与Numpy方差不同

SQLGory-file包FilField不允许提供自定义文件名,自动将文件保存为未命名

ODE集成中如何终止solve_ivp的无限运行

NumPy中条件嵌套for循环的向量化

部分视图的DataFrame

如何更新pandas DataFrame上列标题的de值?

导入错误:无法导入名称';操作';

为什么调用函数的值和次数不同,递归在代码中是如何工作的?