我有一个数据框,在这个数据框中,我必须比较两列,其中可能包含用逗号分隔的多个元素。
A B
U123,U321,U871 U321,U123,U871
U123 U321
U123,U321 U123,U321,U871
但是我不能简单地测试是否相等。 首先,元素被逗号分隔,但我不需要比较逗号。
第二,我只想比较两列中的元素,而不考虑顺序。例如,在A列的第一行中,元素是: U123 U321 U871 ,在B列的第一行中,元素是: U321 U123 U871 ;尽管在我的数据框中,它们似乎具有不同的顺序,但是它们是相同的,因为两个单元格都包含另一个单元格的所有元素。
任何人都可以建议我该如何实现吗?
答案 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