【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()
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值