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

如何将DataFrame字符串列按第二个逗号拆分为两列

如何在第二个逗号后拆分DataFrame的字符串列

你当前的代码使用str.split(",", n=2, expand=True)会把字符串拆分出3个部分(拆分2次得到3列),直接赋值给["city", "code"]时,只会取前两部分,第三部分被丢弃,所以达不到预期效果。这里提供两种可行的解决办法:

方法一:拆分后合并前两列

先拆分出完整的三列,再将前两列合并为城市列,第三列作为编码列,同时处理掉多余的空格:

import pandas as pd

data = pd.DataFrame({ 'Address': ["Berlin, 842, 05", "Vienna, 810, 00", "Moscow, 820, 00"]})

# 拆分字符串为三列
split_result = data["Address"].str.split(",", n=2, expand=True)
# 合并前两列,去除第二列开头的空格
data["City"] = split_result[0] + "," + split_result[1].str.strip()
# 提取第三列作为编码,去除开头空格
data["Code"] = split_result[2].str.strip()
# 可选:删除原Address列
data = data.drop("Address", axis=1)
print(data)

方法二:使用正则表达式提取

利用str.extract结合正则,直接匹配第二个逗号前后的内容,一步到位:

import pandas as pd

data = pd.DataFrame({ 'Address': ["Berlin, 842, 05", "Vienna, 810, 00", "Moscow, 820, 00"]})

# 正则匹配:捕获第二个逗号前的所有内容,以及逗号后的编码
data[["City", "Code"]] = data["Address"].str.extract(r'(.*,.*?),\s*(.*)')
# 可选:删除原Address列
data = data.drop("Address", axis=1)
print(data)

两种方法运行后都会得到你期望的结果:

City Code
0  Berlin, 842   05
1  Vienna, 810   00
2  Moscow, 820   00

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 11:55:18