提问者:小点点

如何找到两个数据帧熊猫之间的差异[duplicate]


我有两个dataFrame,它们都有name列,我想让dataFrame的dataFrame有和dataframeB没有

dataframeA
id     name
 1      aaa
 2      bbbb
 3      cccc
 4      gggg

dataframeB
id     name
 1      ddd
 2      aaa
 3      gggg

新建dataframe

id     name
 1      bbbb
 2      cccc

共3个答案

匿名用户

如果我理解正确,您可以合并这两个数据帧

import pandas as pd
merged_df = pd.merge(dataframe_a, dataframe_b, on='name')

匿名用户

您可以从功能工具中使用减少,或者您可以使用isin来创建一个new_df,它只包含dfA中也存在于dfB中的值。

方法1使用reduce

from functools import reduce #import package

li = [dfA, dfB] #create list of dataframes
new_df = reduce(lambda left,right: pd.merge(left,right,on='name'), li) #reduce list

使用isin的方法2:

new_df = dfA[dfA['name'].isin(dfB['name])]

匿名用户

一种方法是利用python的set功能。

这将把指定的列转换为集合,然后使用输出创建一个新的数据帧。

dataframe = pd.DataFrame(data = {
    'name': list(set(dataframeA['name'].tolist()) - set(dataframeB['name'].tolist()))
})