从2个df列中查找相同的值

2024-04-25 19:27:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个不同的df,具有以下列:

col1                    col2

0 programming           0 programming
1 chess                 1 python
2 leadership            2 leadership
                        3 abba
                        4 games

我想找出col1的值在col2中所占的百分比

为此,我想我可以构造一个新的df,它将包含相同的值,然后是它的lenlen(col2)。首先我想得到这个:

col3

0 programming
1 leadership 

下面是我尝试过的,但我不想使用两个for循环

bb=[]
for i in company.col2:
    for b in student.col1:
        if i==b:
            bb.append(i)

Tags: indfforlencompanygamescol2col3
3条回答

你可以使用列表理解,试试下面的

list1 = ["programming", "chess", "leadership"]
list2 = ["programming", "python", "leadership", "abba", "games"]
list3 = [value for value in list1 if value in list2] 

list3 = ["programming", "leadership"]

在您的用例中,您可以尝试下面的方法。你知道吗

list3 = [value for value in company.col2 if value in student.col1]  
>>> df1 = pd.DataFrame(["programming", "chess", "leadership"], columns=["col1"])
>>> df2 = pd.DataFrame(["programming", "python", "leadership", "abba", "games"], columns=["col2"])

要查找df1['col1']的哪些值在df2['col2']中,请使用isin。结果是一个布尔列。使用sum查找值的数目:

>>> df1['col1'].isin(df2['col2']).sum()

使用size查找df2中元素的数量,然后进行除法:

>>> df1['col1'].isin(df2['col2']).sum() / df2.size

你可以用熊猫.合并要执行内部联接,请执行以下操作:

def main():

    df = pd.DataFrame(["programming", "chess", "leadership"], columns=["col1"])
    df2 = pd.DataFrame(["programming", "python", "leadership", "abba", "games"], columns=["col2"])
    df3 = df.merge(df2, left_on="col1", right_on="col2", how="inner")
    print(df3["col1"])

相关问题 更多 >

    热门问题