如何将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
相关产品推荐
相关产品推荐

