如何在Pandas中比较多个DataFrame并提取df3独有的值
提取仅存在于df3而不在df1、df2中的值
给定三个DataFrame:
df1: Test 1 2 3 df2: Test 4 5 6 df3: Test 4 7 8
要提取df3中独有的、不存在于df1和df2里的值,这里提供两种简洁的实现方式:
方法一:使用pandas原生方法
import pandas as pd # 合并df1和df2的Test列,得到所有已存在的值的集合 existing_values = pd.concat([df1['Test'], df2['Test']]).unique() # 筛选df3中不在现有值集合里的数据 unique_values = df3[~df3['Test'].isin(existing_values)]['Test'].tolist() print(unique_values) # 输出:[7, 8]
方法二:利用集合运算
# 将各DataFrame的Test列转为集合 set_df3 = set(df3['Test']) set_others = set(df1['Test']).union(set(df2['Test'])) # 求集合差集,得到df3独有的值 unique_values = list(set_df3 - set_others) print(unique_values) # 输出:[7, 8]
两种方法都能得到目标结果,第一种更贴合pandas的DataFrame操作逻辑,第二种借助集合的差集运算,代码更简洁直观。
内容的提问来源于stack exchange,提问作者Reem .H
相关产品推荐
相关产品推荐

