You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用pandas的assign()方法将单列拆分后批量赋值给多个新列

正确实现方法

你尝试的两种写法属于Python语法层面不支持的传参方式,assign方法仅支持接收新列名=值格式的关键字参数,无法直接通过多参数名、列表参数名的方式批量传列。

正确的批量赋值写法借助字典解包实现,示例如下:

import pandas as pd
pets = pd.DataFrame({'observation': ['black,cat', 'brown,dog']})

# 写法1:用rename指定列名
(
    pets
    .assign(**pets['observation'].str.split(',', expand=True).rename(columns={0:'colour', 1:'animal'}))
    .drop(columns='observation')
)

# 写法2:用set_axis按顺序指定列名,适合拆分多列的场景
(
    pets
    .assign(**pets['observation'].str.split(',', expand=True).set_axis(['colour', 'animal'], axis=1))
    .drop(columns='observation')
)

实现逻辑说明

  • str.split(expand=True)会返回和拆分结果列数一致的DataFrame,默认列名为0,1,...n
  • 用rename或set_axis将返回的DataFrame列名修改为目标列名
  • 用**运算符将DataFrame解包为列名=列值的关键字参数传入assign,即可完成批量赋值
  • 全程不会修改原始pets数据,符合需求

内容的提问来源于stack exchange,提问作者dcurrie27

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 18:27:03