Python 熊猫匹配雄伟的百万df请求df
我有两个数据帧df1和df2,分别是majestic million数据和代理请求数据。我正在尝试将排名添加到df2,如果它在majestic million上,如果不是,则使用1000001作为排名Python 熊猫匹配雄伟的百万df请求df,python,pandas,Python,Pandas,我有两个数据帧df1和df2,分别是majestic million数据和代理请求数据。我正在尝试将排名添加到df2,如果它在majestic million上,如果不是,则使用1000001作为排名 df1 GlobalRank Domain 0 1 google.com 1 2 facebook.com 2 3 youtube.com 3 4 twitter.com 4 5
df1
GlobalRank Domain
0 1 google.com
1 2 facebook.com
2 3 youtube.com
3 4 twitter.com
4 5 microsoft.com
5 6 linkedin.com
6 7 instagram.com
7 8 wikipedia.org
8 9 plus.google.com
9 10 apple.com
df2
flds count
0 google.com 784565
1 office365.com 36912
2 doubleclick.net 287232
3 facebook.com 239662
4 campsystems.com 231264
5 live.com 211577
6 googlesyndication.com 19233
7 linkedin.com 187754
8 apple.com 146298
9 yahoo.com 128401
期望输出:
df2
flds count GlobalRank
0 google.com 784565 1
1 office365.com 36912 1000001
2 doubleclick.net 287232 1000001
3 facebook.com 239662 2
4 campsystems.com 231264 1000001
5 live.com 211577 1000001
6 googlesyndication.com 19233 1000001
7 linkedin.com 187754 6
8 apple.com 146298 10
9 plus.google.com 128401 9
实现这一目标的最佳方法是什么?试试:
df2['GlobalRank'] = df2['flds'].map(df1.set_index('Domain')['GlobalRank']).fillna(100001).astype(int)
df2
输出:
flds count GlobalRank
0 google.com 784565 1
1 office365.com 36912 100001
2 doubleclick.net 287232 100001
3 facebook.com 239662 2
4 campsystems.com 231264 100001
5 live.com 211577 100001
6 googlesyndication.com 19233 100001
7 linkedin.com 187754 6
8 apple.com 146298 10
9 yahoo.com 128401 100001
注意:由于基于df2的一列,您只能从df1获得一列,因此可以使用map
而不是merge。map的输入是一个pd.序列,使用序列映射到值的索引创建。尝试:
df2['GlobalRank'] = df2['flds'].map(df1.set_index('Domain')['GlobalRank']).fillna(100001).astype(int)
df2
输出:
flds count GlobalRank
0 google.com 784565 1
1 office365.com 36912 100001
2 doubleclick.net 287232 100001
3 facebook.com 239662 2
4 campsystems.com 231264 100001
5 live.com 211577 100001
6 googlesyndication.com 19233 100001
7 linkedin.com 187754 6
8 apple.com 146298 10
9 yahoo.com 128401 100001
注意:由于基于df2的一列,您只能从df1获得一列,因此可以使用
map
而不是merge。map的输入是使用序列映射到值的索引创建的pd.Series。您也可以使用以下方法尝试右键联接:
您也可以使用以下方法尝试右连接:
df2.set_index('flds').join(df1.set_index('Domain')).fillna(1000001)
BTW你的adnxs.com
应该是apple.com
在你的df2
中,以获得你想要的输出df2.set_index('flds')。join(df1.set_index('Domain')).fillna(1000001)
BTW您的adnxs.com
应该是apple.com
在您的df2
中,以获得您想要的输出