从2 df列中找到相同的值python

时间:2018-09-15 08:51:48

标签: python pandas dataframe

我在以下各列中有两个不同的df:

list

我想找出col1 col2 0 programming 0 programming 1 chess 1 python 2 leadership 2 leadership 3 abba 4 games 中出现的col1值的百分比

为此,我认为我可以构建一个新的df,它将包含相同的值,然后包含其col2len。首先,我想得到这个:

len(col2)

这是我尝试过的方法,但是我不想使用两个col3 0 programming 1 leadership 循环

for

3 个答案:

答案 0 :(得分:1)

>>> 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

答案 1 :(得分:0)

您可以使用列表理解,请尝试以下

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

list3 = [“编程”,“领导”]

在您的用例中,您可以尝试以下操作。

list3 = [value for value in company.col2 if value in student.col1]  

答案 2 :(得分:0)

您可以使用pandas.merge进行内部联接:

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"])