如何在Pandas中提取单元格逗号后内容并转移至下一单元格
在Pandas中提取逗号分隔内容到相邻列的实现方法
需求场景
从指定列的单元格中提取逗号分隔的后半部分内容,赋值给右侧相邻列,同时保留原列内容不变。例如:
输入:city列值为
Toronto,Canada,country列值为N/A
输出:country列值变为Canada,city列仍为Toronto,Canada
实现代码
1. 构造示例数据
import pandas as pd # 创建示例DataFrame data = { 'city': ['Toronto,Canada', 'London,UK', 'Paris,France', 'Sydney'], 'country': ['N/A', 'N/A', 'N/A', 'N/A'] } df = pd.DataFrame(data)
2. 核心处理逻辑
推荐两种方法,根据实际场景选择:
方法一:快速拆分(适用于所有目标单元格都包含逗号的情况)
直接用str.split拆分后提取后半部分:
# 拆分city列,取逗号后的部分赋值给country列 df['country'] = df['city'].str.split(',', expand=True)[1]
方法二:兼容无逗号的情况(更鲁棒)
如果存在单元格没有逗号的情况,用apply结合条件判断避免报错,同时保留原列的N/A:
# 遍历每行,有逗号则提取后半部分(去除可能的空格),无则保留原country值 df['country'] = df.apply( lambda row: row['city'].split(',')[1].strip() if ',' in row['city'] else row['country'], axis=1 )
3. 处理结果
执行后df的内容:
city country 0 Toronto,Canada Canada 1 London,UK UK 2 Paris,France France 3 Sydney N/A
关键说明
str.split(',', expand=True)会将拆分后的内容转为新的DataFrame,索引1对应逗号分隔的后半部分- 使用
axis=1的apply可以逐行处理,适配复杂的条件判断 - 原
city列的内容全程保持不变,完全符合需求
内容的提问来源于stack exchange,提问作者vishakha abnave
相关产品推荐
相关产品推荐

