猿问

根据另一个数据框的一列删除一个数据框的行

我有两个 DataFrame 并想删除 df1 中的行,其中我们在 df2 的“a”列中具有相同的值。此外,df2 中的一个公共值只会删除一行。


df1 = pd.DataFrame({'a':[1,1,2,3,4,4],'b':[1,2,3,4,5,6],'c':[6,5,4,3,2,1]})

df2 = pd.DataFrame({'a':[2,4,2],'b':[1,2,3],'c':[6,5,4]})

result = pd.DataFrame({'a':[1,1,3,4],'b':[1,2,4,6],'c':[6,5,3,1]})


凤凰求蛊
浏览 152回答 3
3回答

拉莫斯之舞

使用Series.isin+Series.duplicated创建一个布尔掩码并使用此掩码过滤来自以下行的行df1:m = df1['a'].isin(df2['a']) & ~df1['a'].duplicated()df = df1[~m]结果:print(df)   a  b  c0  1  1  61  1  2  53  3  4  35  4  6  1

千巷猫影

尝试这个df1=pd.DataFrame({'a':[1,1,2,3,4,4],'b':[1,2,3,4,5,6],'c':[6,5,4,3,2,1]})df2=pd.DataFrame({'a':[2,4,2],'b':[1,2,3],'c':[6,5,4]})for x in df2.a:    if x in df1.a:        df1.drop(df1[df1.a==x].index[0], inplace=True)print(df1)

繁星淼淼

尝试这个:import pandas as pddf1=pd.DataFrame({'a':[1,1,2,3,4,4],'b':[1,2,3,4,5,6],'c':[6,5,4,3,2,1]})df2=pd.DataFrame({'a':[2,4,2],'b':[1,2,3],'c':[6,5,4]})df2a = df2['a'].tolist()def remove_df2_dup(x):    if x in df2a:        df2a.remove(x)        return False    return Truedf1[df1.a.apply(remove_df2_dup)]它从 中创建一个列表df2['a'],然后根据 中的每个值检查该列表df1['a'],每次在中匹配时从列表中删除值df1
随时随地看视频慕课网APP

相关分类

Python
我要回答