【pandas教程】根据某列的取值将某列变为多个字段

在数据处理中,有可能遇到需要将某一列的取值变成新的字段,比如有一个表格:

idAB
id1a3.2
id1b4.1
id2a2.2
id2b3

现在需要将表格变为如下:

idA_aA_b
id13.24.1
id22.23

可以看到A的取值a, b变成了新的字段A_a, A_b。

1. 当只有一个索引时,可以使用pivot方法实现上述操作:

 >>> df = pd.DataFrame({"id": ["id1", "id1", "id2", "id2"], "A":["a", "b", "a", "b"], "B":[3.2, 4.1, 2.2, 3]})
 >>> df
    id  A    B
0  id1  a  3.2
1  id1  b  4.1
2  id2  a  2.2
3  id2  b  3.0
>>> df_new = df.pivot(index="id", columns="A", values="B").reset_index()
>>> df_new
A   id    a    b
0  id1  3.2  4.1
1  id2  2.2  3.0
# 重命名字段
>>> df_new.columns = ["id", "A_a", "A_b"]
>>> df_new
    id  A_a  A_b
0  id1  3.2  4.1
1  id2  2.2  3.0

2. 当有多个索引时,使用pandas.pivot_table实现(建议使用这个方法)

df = pd.pivot_table(df, values='B', index=['id'], columns=['A']).reset_index()
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页