Python 是否有一个函数(在df1中)删除两个df中的不同行?

Python 是否有一个函数(在df1中)删除两个df中的不同行?,python,pandas,dataframe,spyder,Python,Pandas,Dataframe,Spyder,我有两个不同长度的数据帧。在df1中,我需要只保留df2中的df1行,并删除所有不在df1中的行。 我使用了下面的函数来查找2个df之间的差异,但我无法删除df1中的所有行 df1[~(df1['F_Code'].isin(df2['Codice']))] 我认为您正在寻找此命令: pandas.merge(df,df2,how='inner') 您可以了解有关熊猫的更多信息。请在此处合并 这很像SQLJOIN关键字 看起来您想合并具有不同列名的列上的两个数据帧。在这种情况下,这就是您需要的

我有两个不同长度的数据帧。在df1中,我需要只保留df2中的df1行,并删除所有不在df1中的行。 我使用了下面的函数来查找2个df之间的差异,但我无法删除df1中的所有行

df1[~(df1['F_Code'].isin(df2['Codice']))]

我认为您正在寻找此命令:

pandas.merge(df,df2,how='inner')
您可以了解有关熊猫的更多信息。请在此处合并

这很像SQL
JOIN
关键字


看起来您想合并具有不同列名的列上的两个数据帧。在这种情况下,这就是您需要的:

import pandas as pd

# Create Example data
df1 = pd.DataFrame({'F_Code': [1,2, 8], 'a': [3,4,5]})
df2 = pd.DataFrame({'Codice': [1,2,3], 'b': [1,2,5]})

df = pd.merge(df1, df2, how='inner', left_on='F_Code', 
              right_on='Codice').drop(columns=df2.columns)

结果:


    F_Code  a
0   1       3
1   2       4

df1[(df1['F_code'].isin(df2['Codice'])]]
?好的,此函数保留两个df之间的公共行,但会复制它们。我需要删除df1中不相等的行。您的意思是同时添加df2的列吗?我更新了答案,现在它只返回来自df1的列。您的解决方案在逻辑上是正确的,但在我的例子中,它重复了行数。我用以下代码解决了这个问题:df_new=[(df1['F_code'].isin(df2['Codice'])](我消除了~)。感谢您的支持。Merge函数在两个df的公共行之间创建一个新列。我需要删除(在df1中)两个df之间的不同行。您确定吗。我对我的答案很有信心,因为我测试了它。你能告诉我为什么你认为这是一个错误的答案吗?