Pandas DataFrame比对:如何将不匹配列名用逗号分隔输出
解决方案
你可以直接修改mismatch_col的生成逻辑,以下提供两种实现方式:
1. 高可读性写法(适合中小数据量)
df3 = df2.copy() df3['mismatch_col'] = df2.ne(df1, axis=1).apply( lambda row: ','.join(row.index[row]), axis=1 )
逻辑说明:df2.ne(df1, axis=1) 会生成布尔矩阵,值为True代表对应位置两个表数据不一致。按行遍历布尔矩阵后,筛选出值为True对应的列名,用逗号拼接即可。
2. 高性能写法(适合大数据量,避免行遍历开销)
df3 = df2.copy() df3['mismatch_col'] = df2.ne(df1, axis=1).dot(df2.columns + ',').str.rstrip(',')
逻辑说明:给每个列名后缀添加逗号后再用矩阵乘法拼接,最后去掉末尾多余的逗号,性能远高于按行apply。
两种写法运行后都可以得到你预期的逗号分隔的不匹配列名结果。
内容的提问来源于stack exchange,提问作者Bhavyashree717
相关产品推荐
相关产品推荐

