Я заметил причудливую вещь.Допустим, А и В - это датафреймы.
A:
A
a b c
0 x 1 a
1 y 2 b
2 z 3 c
3 w 4 d
B:
B
a b c
0 1 x a
1 2 y b
2 3 z c
3 4 w d
Как мы видим выше, элементы под столбцом a
в A
и B
отличаются, но A.equals(B)
дает True
A==B
правильно показывает, что элементы не равны:
A==B
a b c
0 False False True
1 False False True
2 False False True
3 False False True
Вопрос : Может кто-нибудь пожалуйстаобъясните, почему .equals()
дает True
?Кроме того, я исследовал эту тему на SO.Согласно контракту панд. DataFrame.equals , Pandas
должен вернуть False
.Я буду признателен за любую помощь.
Я новичок, поэтому я буду признателен за любую помощь.
Вот формат json
и ._data
A и B
A
`A.to_json()`
Out[114]: '{"a":{"0":"x","1":"y","2":"z","3":"w"},"b":{"0":1,"1":2,"2":3,"3":4},"c":{"0":"a","1":"b","2":"c","3":"d"}}'
и A._data
равно
BlockManager
Items: Index(['a', 'b', 'c'], dtype='object')
Axis 1: RangeIndex(start=0, stop=4, step=1)
IntBlock: slice(1, 2, 1), 1 x 4, dtype: int64
ObjectBlock: slice(0, 4, 2), 2 x 4, dtype: object
B
в формате json:
B.to_json()
'{"a":{"0":1,"1":2,"2":3,"3":4},"b":{"0":"x","1":"y","2":"z","3":"w"},"c":{"0":"a","1":"b","2":"c","3":"d"}}'
B._data
BlockManager
Items: Index(['a', 'b', 'c'], dtype='object')
Axis 1: RangeIndex(start=0, stop=4, step=1)
IntBlock: slice(0, 1, 1), 1 x 4, dtype: int64
ObjectBlock: slice(1, 3, 1), 2 x 4, dtype: object