如何为Pandas DataFrame批量添加拼接两列值的新列?
Pandas高效拼接列并解决SettingWithCopy警告
解决警告问题
你遇到的SettingWithCopyWarning不是拼接逻辑错误,而是当前df可能是另一个DataFrame的切片副本,直接赋值触发了Pandas的安全提醒。可以通过两种方式解决:
- 先将
df转为独立的DataFrame:
df = df.copy() df['ColC'] = df['ColA'] + ' (' + df['ColB'] + ')'
- 直接用
.loc指定行列赋值,明确操作原数据:
df.loc[:, 'ColC'] = df['ColA'] + ' (' + df['ColB'] + ')'
高效拼接方法(无需逐行处理)
Pandas提供多种批量字符串拼接方法,性能优于直接用+拼接,尤其适合大数据量场景:
str.cat方法(性能最优):专门的字符串批量拼接工具
df['ColC'] = df['ColA'].str.cat(df['ColB'], sep=' (', na_rep='') + ')'
- 格式化字符串结合
apply:适配复杂格式需求
df['ColC'] = df.apply(lambda x: f"{x['ColA']} ({x['ColB']})", axis=1)
format_map格式化:可读性更好的写法
df['ColC'] = df.apply(lambda x: "{ColA} ({ColB})".format_map(x), axis=1)
这些方法均为批量处理逻辑,无需逐行循环,效率和Excel填充一致。
内容的提问来源于stack exchange,提问作者Joanna Boone
相关产品推荐
相关产品推荐

