繁体   English   中英

匹配来自两个不同数据帧的两个数据不同列

[英]Matching two data different columns from two different dataframes

所以我有两个不同的数据框,两个数据框都有称为“域”的列,并显示来自不同来源的域。 域很干净,看起来像www.google.comwww.facebook.com ,而不像www.facebook.com/4938249084

我要实现的目标是了解 DF1 中的任何域是否在 DF2 的域中,以及是否在 DF2 中,Append DF1 域是否在列表中。 这是我写的代码。

只是为了让你们有一个想法,DF1 有大约 4,000 条记录 v DF2 有大约 7,000 条记录。

DF1

                 Domains
0                              NaN
1    www.hawaiiantimeathletics.com
2                              NaN
3              www.beach-elite.com
4                              NaN
5           www.dreamingoldvbc.com
6           www.pacificunionvb.com
7           www.alabamajuniors.com
8     www.birminghamvolleyball.com
9         www.magiccitythunder.com

DF2

                 Domains
0            www.labcsandiego.com
1         www.ahavavolleyball.com
2        www.northernelite-va.com
3               www.theedgevc.com
4                  divadallas.org
5            www.beach-elite.com
6         650xtremevolleyball.org
7             www.clubsouthvb.com
8    www.northidahovolleyball.com
9        wajvolleyball.site123.me

在此示例中,唯一应附加到列表中的域是“www.beach-elite.com”。

这是我写的代码

def match_domain(col1,col2):
    list1 = []
    for a in col1:
        v1 = a
    for b in col2:
        v2 = b 
        if v1 == v2:
            list1.append(v1)
            print(v1)
        elif v1 != v2:
            print('none')

match_domain(DF1, DF2)

先感谢您 !

您可以使用isin function 来确定这一点。

import pandas as pd
df1 = pd.DataFrame({'Domains': ['NaN', 'www.hawaiiantimeathletics.com', 'NaN', 'www.beach-elite.com', 'www.dreamingoldvbc.com', 'www.pacificunionvb.com', 'www.alabamajuniors.com', 'www.birminghamvolleyball.com', 'www.magiccitythunder.com']})
df2 = pd.DataFrame({'Domains': ['www.labcsandiego.com', 'www.ahavavolleyball.com', 'www.northernelite-va.com', 'www.theedgevc.com', 'divadallas.org', 'www.beach-elite.com', '650xtremevolleyball.org', 'www.clubsouthvb.com', 'www.northidahovolleyball.com', 'wajvolleyball.site123.me']})

df1.Domains[df1.Domains.isin(df2.Domains)].unique()

这应该给你域列的交集。

这可以使用列表理解来解决。 将两个数据框转换为列表并在另一个列表中查找,如下所示:-

df1:

Domains
NaN
www.hawaiiantimeathletics.com
NaN
www.beach-elite.com
NaN
www.dreamingoldvbc.com
www.pacificunionvb.com
www.alabamajuniors.com
www.birminghamvolleyball.com
www.magiccitythunder.com

df2:

Domains
www.labcsandiego.com
www.ahavavolleyball.com
www.northernelite-va.com
www.theedgevc.com
divadallas.org
www.beach-elite.com
650xtremevolleyball.org
www.clubsouthvb.com
www.northidahovolleyball.com
wajvolleyball.site123.me

代码:

list1 = [ domain for domain in df1['Domains'].tolist() if domain in df2['Domains'].tolist() ]

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM