Панды соответствуют Majestic Million df, чтобы запросить df - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть два кадра данных: df1 с величественными миллионными данными и df2 с данными запроса прокси.Я пытаюсь добавить ранг к df2, если он на величественном миллионе, а если нет, тогда используйте 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

Чтолучший способ сделать это?

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

Вы можете попробовать присоединиться вправо, используя pandas.DataFrame.merge :

new_df = df1.merge(df2, how = 'right', on = 'domain').drop(columns = ['count']).fillna(100001)
new_df

  global_rank   domain
0   1.0         google.com
1   2.0         facebook.com
2   6.0         linkedin.com
3   10.0        apple.com
4   100001.0    office365.com
5   100001.0    doubleclick.com
6   100001.0    campsystems.com
7   100001.0    live.com
8   100001.0    googlesyndication.com
9   100001.0    yahoo.com
0 голосов
/ 05 декабря 2018

Попробуйте:

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

Примечание. Поскольку вы получаете только один столбец из df1 на основе одного столбца df2, вместо него можно использовать mapслияния.Входные данные карты - это pd.Series, созданные с использованием индекса сопоставления ряда со значением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...