如何为已有数据的DataFrame同时添加值不同的多列?
当然可以一次性添加这两列!完全不用逐个操作,pandas提供了几种通用又高效的方法来批量创建新列,我给你整理了最常用的几种:
方法1:使用assign()方法(推荐,灵活且安全)
assign()是我个人最常用的方式,它可以一次性定义多个新列,并且返回一个包含新列的新DataFrame(不会修改原始的df,如果你想覆盖原数据,直接重新赋值就行)。代码示例:
# 生成带新列的新DataFrame,原df保持不变 new_df = df.assign(Subject="F1", Slide="1A") # 如果需要直接更新原df,就这么写 df = df.assign(Subject="F1", Slide="1A")
这个方法最大的优势是支持链式操作——比如你可以紧接着对新列做过滤、转换等操作,非常适合数据处理流水线。
方法2:直接批量赋值(直接修改原DataFrame)
如果你想直接在原始DataFrame上添加列,不用创建新对象,可以用简洁的广播赋值:
# pandas会自动把标量值"F1"和"1A"广播到整个列 df.loc[:, ['Subject', 'Slide']] = ["F1", "1A"]
或者也可以用字典来明确指定列和对应的值,这种方式在需要动态生成列值时更清晰:
import pandas as pd df[['Subject', 'Slide']] = pd.DataFrame({ 'Subject': ["F1"] * len(df), 'Slide': ["1A"] * len(df) })
额外提示:适配动态列值的场景
上面的例子是固定值的情况,但这些方法同样适用于需要根据现有列计算新列的场景。比如如果Subject的值需要基于df里的某列生成,用assign()可以这么写:
df = df.assign(Subject=lambda x: x['ID'].str[:2], Slide="1A")
这种写法非常通用,不管是固定值还是动态计算的列,都能统一处理。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

