如何在Python Pandas中提取列内分隔符右侧的值并拆分列?
嘿,这个需求用Pandas的字符串处理工具就能轻松实现,给你两个靠谱的方案:
方案1:用str.split()直接拆分
这是最直观的方法,利用Pandas内置的字符串拆分功能,指定分隔符为逗号,再通过参数控制拆分行为:
import pandas as pd # 先构造你的示例DataFrame df = pd.DataFrame({'A': ['Australia', 'New Zealand', 'New Jersey,America', 'Hyderabad,India']}) # 拆分列:n=1表示只拆分第一次出现的逗号,expand=True将拆分结果转为多列 df[['A', 'B']] = df['A'].str.split(',', n=1, expand=True)
这里的n=1非常重要——它确保只会拆分第一个逗号,避免遇到多个逗号时拆分出多余列的问题。没有逗号的行,新列B会自动填充NaN,完美符合你的预期。
方案2:用str.extract()正则提取
如果你偏好正则表达式的方式,也可以用提取的思路来实现:
df[['A', 'B']] = df['A'].str.extract(r'(.*?)(?:,(.*))?$', expand=True)
简单解释下这个正则:
(.*?):非贪婪匹配逗号前的所有内容,作为更新后的A列(?:,(.*))?$:匹配逗号后的内容作为B列,?:表示这是一个非捕获组,$确保匹配到行尾;没有逗号的行,B列会自动设为NaN
验证结果
运行上面任意一种方案后,执行print(df)就能得到你想要的输出:
A B 0 Australia NaN 1 New Zealand NaN 2 New Jersey,America America 3 Hyderabad,India India
内容的提问来源于stack exchange,提问作者Abdul Quddus
相关产品推荐
相关产品推荐

