Pandas两个存储数字列表的Object列对比及新增相同值计数列问题
解决方法
步骤1:转换列数据格式
从CSV导入的列表默认会被识别为字符串,先转换为真实的数字列表:
import pandas as pd import ast # 表1存储待对比的固定数字列表,取第一行值转为集合提升计算效率 target_nums = set(ast.literal_eval(df1['待对比列表列名'].iloc[0])) # 表2按日期存储的数字列表列,逐行转成真实列表 df2['日期维度数字列名'] = df2['日期维度数字列名'].apply(ast.literal_eval)
步骤2:统计重合数字数量
遍历表2每行计算和目标列表的重合个数:
df2['重合数字个数'] = df2['日期维度数字列名'].apply(lambda x: len(set(x) & target_nums))
如果你需要两个表逐行对应比对(两表行数完全一致),可以用以下写法:
df['重合数字个数'] = df.apply(lambda row: len(set(row['表1列表列名']) & set(row['表2列表列名'])), axis=1)
内容的提问来源于stack exchange,提问作者Amir
相关产品推荐
相关产品推荐

