比较两列中的多个元素,以了解它们在Python数据框中的顺序

时间:2019-07-03 06:01:56

标签: python-3.x dataframe

我有一个数据框,在这个数据框中,我必须比较两列,其中可能包含用逗号分隔的多个元素。

     A                   B
U123,U321,U871    U321,U123,U871
U123                 U321
U123,U321         U123,U321,U871

但是我不能简单地测试是否相等。 首先,元素被逗号分隔,但我不需要比较逗号。

第二,我只想比较两列中的元素,而不考虑顺序。例如,在A列的第一行中,元素是: U123 U321 U871 ,在B列的第一行中,元素是: U321 U123 U871 ;尽管在我的数据框中,它们似乎具有不同的顺序,但是它们是相同的,因为两个单元格都包含另一个单元格的所有元素。

任何人都可以建议我该如何实现吗?

1 个答案:

答案 0 :(得分:1)

尝试以下代码:

#First create a list of elements from both columns on the basis, if length of number of elements is same or not...

comp_List =  [ (data1.split(','),data2.split(','))  if len(data1.split(',')) == len(data2.split(','))  else False   for data1,data2 in zip(df1['A'],df1['B']) ]

#Now compare elements between the columns and create another list of boolean values

for i in range(len(comp_List)):
    print(i)
    print(comp_List[i])

    data1 = comp_List[i]
    boollst = True
    print(type(data1))
    if type(data1) is not bool:
        print(len(data1[0]))
        for j in range(len(data1[0])):
            if data1[0][j] in data1[1]:
                pass
            else:
                comp_List[i] = False
        comp_List[i] = boollst

#Now add that list as a column in your data frame...

df1['Compared'] = comp_List

#So your data frame would look like this...
[![Dataframe with compared column][1]][1]


  [1]: https://i.stack.imgur.com/N3g16.png