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