我有两个索引相同但列名不同的数据框。列数相同。我想按索引检查,1) 无论列顺序如何,它们是否具有相同的值集,以及 2) 它们是否具有关于列顺序的相同值集。
ind = ['aaa', 'bbb', 'ccc']
df1 = pd.DataFrame({'old1': ['A','A','A'], 'old2': ['B','B','B'], 'old3': ['C','C','C']}, index=ind)
df2 = pd.DataFrame({'new1': ['A','A','A'], 'new2': ['B','C','B'], 'new3': ['C','B','D']}, index=ind)
这是我需要的输出。
OpX OpY
-------------
aaa True True
bbb False True
ccc False False
谁能帮我解决 OpX 和 OpY?
最佳答案
使用 tuple
和 set
:保持顺序或元组,并使用 set
重新排序
s1=df1.apply(tuple,1)==df2.apply(tuple,1)
s2=df1.apply(set,1)==df2.apply(set,1)
pd.concat([s1,s2],1)
Out[746]:
0 1
aaa True True
bbb False True
ccc False False
由于cs95提到apply这里有问题
s=np.equal(df1.values,df2.values).all(1)
t=np.equal(np.sort(df1.values,1),np.sort(df2.values,1)).all(1)
pd.DataFrame(np.column_stack([s,t]),index=df1.index)
Out[754]:
0 1
aaa True True
bbb False True
ccc False False
关于python - 检查 pandas DataFrame 中的两行是否具有相同的值集,无论列顺序如何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56388062/