如何输出使pandas.DataFrame.any返回True的单元格值及重复数据
解决方法
要输出导致pandas.DataFrame.any()返回True的具体单元格值,并对应到重复的DataFrame,你可以修改代码,直接提取重复数值而非仅判断存在性。以下是优化后的实现:
import pandas as pd dataframe_arrays = [] Df1 = pd.DataFrame({'IDs': ['Marc', 'Jake', 'Sam', 'Brad']}) dataframe_arrays.append(Df1) Df2 = pd.DataFrame({'IDs': ['TIm', 'Tom', 'harry', 'joe', 'bill']}) dataframe_arrays.append(Df2) Df3 = pd.DataFrame({'IDs': ['kob', 'ham', 'konard', 'jupyter', 'Marc']}) # 遍历数组中的每个DataFrame,查找重复值 for df_idx, target_df in enumerate(dataframe_arrays): # 筛选Df3中与当前target_df重复的ID值 duplicate_ids = Df3[Df3['IDs'].isin(target_df['IDs'])]['IDs'].unique().tolist() if duplicate_ids: print(f"找到重复值:{duplicate_ids}") print(f"对应DataFrame(索引{df_idx}):") print(target_df) print("---")
关键说明:
Df3['IDs'].isin(target_df['IDs'])生成布尔Series,标记Df3中哪些ID在目标DataFrame中存在- 通过布尔索引
Df3[布尔Series]['IDs']提取所有重复ID,用unique()去重(避免Df3内重复值多次显示),tolist()转为列表提升可读性 - 用
enumerate获取每个DataFrame的索引,清晰区分是数组中的哪一个DataFrame - 移除原代码中的
break,确保检查数组内所有DataFrame,不会漏掉后续可能的重复
内容的提问来源于stack exchange,提问作者desert_ranger
相关产品推荐
相关产品推荐

