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'))
谢谢你,我在做类似的事情之前试过了,但没有成功,这成功了!谢谢你,它起作用了,我在做类似的事情之前也试过了,但没有起作用,这起作用了!