Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫匹配雄伟的百万df请求df_Python_Pandas - Fatal编程技术网

Python 熊猫匹配雄伟的百万df请求df

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和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           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
中,以获得您想要的输出