Python 如何在两个数据帧之间找到具有相同ID的所有记录?

Python 如何在两个数据帧之间找到具有相同ID的所有记录?,python,python-3.x,pandas,Python,Python 3.x,Pandas,我有两个数据帧,其中包含来自两个不同平台(id、标题、评论等)的电影评论数据。如果在另一个数据帧中未审阅某一特定电影,则需要从该数据帧中删除该电影的所有行。下面是一个例子: import pandas as pd data1 = [[1, 'Great movie!', 'Spiderman'], [1, 'Not my preference', 'Spiderman'], [2, 'Just average...', 'Captain America'], [4, 'Tolerable',

我有两个数据帧,其中包含来自两个不同平台(id、标题、评论等)的电影评论数据。如果在另一个数据帧中未审阅某一特定电影,则需要从该数据帧中删除该电影的所有行。下面是一个例子:

import pandas as pd 

data1 = [[1, 'Great movie!', 'Spiderman'], [1, 'Not my preference', 'Spiderman'], [2, 'Just average...', 'Captain America'], [4, 'Tolerable', 'Avengers']]

data2 = [[1, 'Did not think much of this', 'Spiderman'], [2, 'Great in my opinion!', 'Captain America'], [3, 'Could not finish', 'Batman Returns']]

df1 = pd.DataFrame(data1, columns = ['id', 'review', 'movie title'])

df2 = pd.DataFrame(data2, columns = ['id', 'review', 'movie title'])

df1.insert(3, "isValid", pd.Series(df1.id.isin(df2.id).values.astype(bool)))
df1 = df1[df1.isValid != False]
我想知道有没有更有效的方法


提前感谢您的帮助

您正在寻找
merge
函数。这将删除
df1
df2
中未看到的所有内容

df1.merge(df2,on=["id","movie title"])
Out: 
   id           review_x      movie title                    review_y
0   1       Great movie!        Spiderman  Did not think much of this
1   1  Not my preference        Spiderman  Did not think much of this
2   2    Just average...  Captain America        Great in my opinion!

您的
df1
id
id,review\u x,movie title
df2
id,movie title review\u y
如果您想在df1中获得
的“有效”信息,可以执行以下操作:

df1["isValid"] = df1.id.isin(df2.id)
new_df = df1.loc[df1.isValid == True]

   id             review      movie title  isValid
0   1       Great movie!        Spiderman     True
1   1  Not my preference        Spiderman     True
2   2    Just average...  Captain America     True
但是,如果您不关心“是否有效”
,只在选择答案时使用它,您可以简单地执行以下操作:

new_df = df1.loc[df1.id.isin(df2.id)]

   id             review      movie title
0   1       Great movie!        Spiderman
1   1  Not my preference        Spiderman
2   2    Just average...  Captain America

这个问题太宽泛了。看一看如何创建一个能让人们重现你的问题的模型好的,可以。谢谢@rafaelc我已经添加了一个例子并找到了一个合理的解决方案,但我想知道是否有更好的方法来做到这一点,因为我两边都有几百万条记录?谢谢。我必须将数据帧分开,所以使用合并并不能解决问题。谢谢你的澄清,这就是我想要的答案。:)