import pandas as pd
df1 = pd.DataFrame(index=[1,2,3,4])
df1['A'] = [1,2,5,4]
df1['B'] = [5,6,9,8]
df1['C'] = [9,10,1,12]
>>> df1
A B C
1 1 5 9
2 2 6 10
3 5 9 1
4 4 8 12
我想比较df1的行并得到row1(1,5,9)== row3(5,9,1)的结果。
这意味着我只关心行中包含的项目,而忽略行中项目的顺序。
答案 0 :(得分:2)
我认为需要按np.sort
对每一行进行排序:
df2 = pd.DataFrame(np.sort(df1.values, axis=1), index=df1.index, columns=df1.columns)
print (df2)
A B C
1 1 5 9
2 2 6 10
3 1 5 9
4 4 8 12
然后通过由duplicated
创建的倒置(~)
布尔掩码删除重复项:
df2 = pd.DataFrame(np.sort(df1.values, axis=1), index=df1.index)
print (df2)
0 1 2
1 1 5 9
2 2 6 10
3 1 5 9
4 4 8 12
df1 = df1[~df2.duplicated()]
print (df1)
A B C
1 1 5 9
2 2 6 10
4 4 8 12
答案 1 :(得分:0)
如果columnm中两次都没有值,则只需将您的columnns转换为set
row1 = df.iloc[1]
row3 = df.iloc[3]
set(row1) == set(row3)
它的优点是您可以比较列,例如查找一个值是否存在,而另一个值不存在。
row1 - row3 # find the values that are in row1 but not in row3