Python Pandas:满足条件时提取列中指定字符组赋值到另一列
解决方案
首先修正原始数据中的长度不一致问题(col1有4个元素,col2需对应4个空值,否则创建DataFrame会报错):
import pandas as pd data = {'col1': ['AK B C1', 'A', 'C D', 'AK B E'], 'col2': ['', '', '', '']} df = pd.DataFrame(data)
方法一:字符串方法组合实现
通过Pandas内置的字符串方法快速完成逻辑:
- 先将
col2初始化为空字符串 - 用
str.contains筛选出col1包含'AK B'的行 - 对符合条件的行,用
str.split()按空格分割字符串,再提取索引为2的元素(即第三组字符)赋值给col2
df['col2'] = '' mask = df['col1'].str.contains('AK B') df.loc[mask, 'col2'] = df.loc[mask, 'col1'].str.split().str[2]
方法二:自定义函数逐行处理
如果需要更灵活的逻辑(比如处理分割后不足三组的情况),可以用apply配合自定义函数:
def get_third_segment(row): if 'AK B' in row['col1']: segments = row['col1'].split() # 确保分割后至少有三组字符,否则返回空 return segments[2] if len(segments) >= 3 else '' return '' df['col2'] = df.apply(get_third_segment, axis=1)
执行上述任意一种方法后,df['col2']的结果为:['C1', '', '', 'E'],完全符合预期。
内容的提问来源于stack exchange,提问作者Luis
相关产品推荐
相关产品推荐

