我有两个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
如果我理解正确,您可以合并这两个数据帧
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()))
})