我需要比较两列中的国家代码,这两列都在单个单元格中存储多个值,一个是逗号分隔的字符串,另一个是Python列表。
A列 | B列 | BB, CC | (AA、BB) |
---|---|
AA、BB | (AA、BB) |
算出来了,想分享一下分辨率
def func(string, codes): # e.g. string='AA|CC', codes=['AA', 'BB'] >> return ['BB']
missing_codes = []
for c in codes:
if c not in string:
missing_codes.append(c)
return missing_codes
接下来,应用并广播该函数,返回一系列缺失的代码。
missing_codes = pd.concat([df['Column A'], df['Column B']], axis=1).apply(lambda x:func(x['Column A'], x['Column B']), axis=1)
最后,将序列连接到列A
df['Column C'] = (df['Column A'] + ',' + missing_codes.apply(lambda x:','.join(x))).str.strip(',')