myslel som toto riešenie môjho problému, ale op tu treba skontrolovať, či riadky jeho dvoch dátových rámcov obsahujú rozdiel. Chcem urobiť to isté, ale pre stĺpce. Riešením bolo ne = (df1 != df2).any(1)
ale to nepomôže s mojimi stĺpmi. Áno, skontroloval som a oba moje dátové rámy majú presne to isté shape
, Ak áno df1 == df2
dáva mi nový dátový rámec plný trues afalses. Pri pohľade na prvých sto riadkov sa zdá, že väčšina stĺpcov s niekoľkými výnimkami je rovnaká. Ako môžete získať len jeden True / False pre každý stĺpec?
Tu je príklad hračiek:
import numpy as np
import pandas as pd
df1 = pd.DataFrame(np.random.randint(low=0, high=10, size=(5, 5)), columns=["a", "b", "c", "d", "e"])
df2 = df1.copy()
df2.at[3,"d"] += 10
Požadovaný výstup:
A True
B True
C True
D False
E True
odpovede:
3 pre odpoveď č. 1použitie DataFrame.all
na kontrolu, či sú všetky hodnoty na riadkoch True
s:
print ((df1 == df2).all())
a True
b True
c True
d False
e True
dtype: bool
detail:
print (df1 == df2)
a b c d e
0 True True True True True
1 True True True True True
2 True True True True True
3 True True True False True
4 True True True True True
Riešenie s any
je tiež možné, potrebujú len invertný výstup ~
:
print (~((df1 != df2).any()))
a True
b True
c True
d False
e True
dtype: bool