如何在pandas DataFrame中实现字符串列的条件拼接
实现pandas DataFrame两列条件拼接的两种方案
方案1:使用Series.str.cat()(推荐)
这是pandas官方提供的字符串拼接专用方法,代码更简洁,适配性更强:
import pandas as pd sample_dict = { 'A' : ["entry", "", "", "entry"], 'B' : ["foo", "foo", "", ""] } sample_frame = pd.DataFrame(sample_dict) # 将空字符串替换为NaN,适配str.cat的空值处理逻辑 sample_frame = sample_frame.replace("", pd.NA) # 拼接时指定分隔符,空值填充为空字符串 sample_frame['A'] = sample_frame['A'].str.cat(sample_frame['B'], sep=", ", na_rep="") del sample_frame['B'] # 可选:将结果中的空值还原为空字符串 sample_frame = sample_frame.fillna("")
输出结果完全符合需求:
A 0 entry, foo 1 foo 2 3 entry
方案2:使用np.where()条件判断
逻辑更直白,可灵活自定义拼接规则:
import pandas as pd import numpy as np sample_dict = { 'A' : ["entry", "", "", "entry"], 'B' : ["foo", "foo", "", ""] } sample_frame = pd.DataFrame(sample_dict) # 仅当两列都不为空时添加分隔符 cond = (sample_frame['A'] != "") & (sample_frame['B'] != "") sample_frame['A'] = np.where(cond, sample_frame['A'] + ", " + sample_frame['B'], sample_frame['A'] + sample_frame['B']) del sample_frame['B']
内容的提问来源于stack exchange,提问作者Pm740
相关产品推荐
相关产品推荐

