python - 检查 pandas DataFrame 中的两行是否具有相同的值集,无论列顺序如何

标签 python pandas dataframe

我有两个索引相同但列名不同的数据框。列数相同。我想按索引检查,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?

最佳答案

使用 tupleset:保持顺序或元组,并使用 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/

相关文章:

python - 如何在屏幕上绘制对象?

python - 最小组大小的 Pandas groupby

python - 更新 dict 值不会更新它引用的全局变量

python - 如何从 DataFrame Pandas 中动态删除行

scala - 基于非空值加入 Spark 数据帧(scala)

python - 如何在 python 代码中运行 f2py

python - 模块 `collections` 中的其他 26 个元素

python - Django:错误:未知命令: 'makemigrations'

python - 在 MultiIndex DataFrame 中重采样时间序列

dataframe - 在 Julia Juno 中查看类似函数