首页 > 解决方案 > 选择多个值在另一个 DataFrame 中的行

问题描述

我有一个具有以下形式的 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)出现在的对:

     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_id以及同一行。dayaccess_date

数据帧很大,是否有一种有效的方法不需要逐行迭代数据帧之一?

一个条目(day, u)可以在 DataFrame 中出现多次,还有其他字段没有显示。

标签: pythonpandasdataframe

解决方案


一种方法是内部合并:

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

推荐阅读