Pandas 如何通过按一列分组并在另一列上进行匹配来获得转换后的数据帧

Pandas 如何通过按一列分组并在另一列上进行匹配来获得转换后的数据帧,pandas,Pandas,我有一个熊猫数据框,如下所示 col_a col_b col_c 2021-05-01 1 30 2021-05-01 3 40 2021-05-01 2 60 2021-05-02 1 70 2021-05-02 2 10 2021-05-02 3 20 我想将

我有一个熊猫数据框,如下所示

col_a            col_b     col_c
2021-05-01        1           30
2021-05-01        3           40
2021-05-01        2           60
2021-05-02        1           70
2021-05-02        2           10
2021-05-02        3           20
我想将其放入以下数据框(即,根据原始数据框中
col_b
列中的不同类型添加
n
新列,然后根据
col_a
进行匹配以填充值)


您能帮我吗?

您可以使用
pivot

df = df.pivot(*df).add_prefix('type_')
要进一步转换为所需的结构,请使用:

df = df.pivot(*df).add_prefix('type_').rename_axis(None, axis= 1).reset_index()
输出

        col_a  type_1  type_2  type_3
0  2021-05-01      30      60      40
1  2021-05-02      70      10      20
        col_a  type_1  type_2  type_3
0  2021-05-01      30      60      40
1  2021-05-02      70      10      20
还有一个
设置索引
/
取消堆栈
选项:

df = df.set_index(['col_a','col_b']).unstack().add_prefix('type_')
df.columns = df.columns.droplevel()
可以使用和作为列名。按和最后清除列轴名称,如下所示:

df = (df.pivot(index='col_a', columns='col_b', values='col_c')
        .add_prefix('type_')
        .rename_axis(columns=None)
        .reset_index()
     )
结果:

        col_a  type_1  type_2  type_3
0  2021-05-01      30      60      40
1  2021-05-02      70      10      20