Python 选择多个值位于另一数据帧中的行

Python 选择多个值位于另一数据帧中的行,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个数据框,其形式如下: day u a 0 2018-03-01 5658599 suggestion 1 2018-03-01 10405594 suggestion 2 2018-03-01 4142545 suggestion 3 2018-03-01 10397546 suggestion 4 2018-03-01 10296737 suggestion 我想选择出现在以下位置的(day,u):

我有一个数据框,其形式如下:

      day         u           a
 0 2018-03-01   5658599  suggestion
 1 2018-03-01  10405594  suggestion
 2 2018-03-01   4142545  suggestion
 3 2018-03-01  10397546  suggestion
 4 2018-03-01  10296737  suggestion
我想选择出现在以下位置的
(day,u)

     user_id access_date access_platform
 0  10405592  2018-03-01             IOS
 1  10405594  2018-03-01         ANDROID
 2  10405593  2018-03-01         ANDROID
 3  10405596  2018-03-01         ANDROID
 4  10405597  2018-03-01         ANDROID
其中
u
user\u id
与同一行的
day
access\u date
相同

数据帧是巨大的,有没有一种有效的方法不需要逐行迭代其中一个数据帧

(day,u)
条目可以在一个数据框中出现多次,但还有其他字段未显示。

与一起使用可删除两个
数据框中可能存在的重复项:

df1 = df1.drop_duplicates(subset=['day','u'])
df2 = df2.drop_duplicates(subset=['access_date','user_id'])

如果需要所有列:

df = df2.merge(df1, left_on=['access_date','user_id'], right_on=['day','u'])[df1.columns]
print (df)

          day         u           a
0  2018-03-01  10405594  suggestion
用于删除两个数据帧中可能的重复项:

df1 = df1.drop_duplicates(subset=['day','u'])
df2 = df2.drop_duplicates(subset=['access_date','user_id'])

如果需要所有列:

df = df2.merge(df1, left_on=['access_date','user_id'], right_on=['day','u'])[df1.columns]
print (df)

          day         u           a
0  2018-03-01  10405594  suggestion

一种方法是内部合并:

res = df1.merge(df2, how='inner', left_on=['day', 'u'],
                right_on=['access_date', 'user_id'])\
         .loc[:, df1.columns]

print(res)

          day         u           a
0  2018-03-01  10405594  suggestion

一种方法是内部合并:

res = df1.merge(df2, how='inner', left_on=['day', 'u'],
                right_on=['access_date', 'user_id'])\
         .loc[:, df1.columns]

print(res)

          day         u           a
0  2018-03-01  10405594  suggestion

df1.merge(df2.rename(columns={'user\u id':'u','access\u date':'day'))
df1.merge(df2.rename(columns={'user\u id':'u','access\u date':'day'))
谢谢你,我在做类似的事情之前试过了,但没有成功,这成功了!谢谢你,它起作用了,我在做类似的事情之前也试过了,但没有起作用,这起作用了!