如何合并名称相似的多列?含空值的批量列合并方法
批量合并名称相似的列(含空值处理)
解决方案(基于Pandas)
假设你使用Python的Pandas库处理表格数据,可按以下步骤批量合并这类名称相似的列:
筛选目标列
先从DataFrame中筛选出所有符合命名规则的列,针对scheduleSettings_nodes_0_name、scheduleSettings_nodes_1_name这类列,可用正则匹配精准筛选:import pandas as pd # 假设数据存储在df中 # 正则匹配:匹配以scheduleSettings_nodes_开头、中间是数字、以_name结尾的列 target_cols = df.columns[df.columns.str.match(r'scheduleSettings_nodes_\d+_name')] # 若命名规则唯一,也可简化为模糊筛选 # target_cols = df.filter(like='scheduleSettings_nodes_').columns合并列并处理空值
对每行的目标列过滤空值(None/NaN),将非空值用逗号拼接成字符串:# 生成合并后的新列 df['scheduleSettings_nodes_name'] = df[target_cols].apply( lambda row: ', '.join(row.dropna().astype(str)), axis=1 )(可选)删除原目标列
若无需保留原85个列,可批量删除:df = df.drop(columns=target_cols)
示例验证
用你给出的测试数据验证逻辑:
# 构造示例数据 data = { 'apple_0': ['abc', 'abc', 'hig', 'dsf'], 'apple_1': [None, 'efg', None, None], 'other_col': ['x', 'y', 'z', 'w'] # 混杂的其他列 } df = pd.DataFrame(data) # 筛选目标列 target_cols = df.columns[df.columns.str.match(r'apple_\d+')] # 合并列 df['apple'] = df[target_cols].apply(lambda row: ', '.join(row.dropna().astype(str)), axis=1) # 删除原列 df = df.drop(columns=target_cols) print(df)
输出结果:
other_col apple 0 x abc 1 y abc, efg 2 z hig 3 w dsf
内容的提问来源于stack exchange,提问作者Rebekah Lee
相关产品推荐
相关产品推荐

