Как проверить, что фреймы данных равны, когда один из них из JSON?

#python #pandas

Вопрос:

У меня есть 2 кадра данных. Один загружен из parquet, другой сгенерирован из словаря в JSON.

Я продолжаю получать эту ошибку, даже если индексы одинаковы, т. е. 0-5.

 E AssertionError: DataFrame.index are different E  E DataFrame.index classes are not equivalent E [left]: RangeIndex(start=0, stop=5, step=1) E [right]: Index(['0', '1', '2', '3', '4'], dtype='object')  

кто-нибудь знает, что мне нужно сделать с правым или левым фреймом данных, чтобы это сработало?

линия такая

 pd.testing.assert_frame_equal(de_df.head(), pd.DataFrame(expected_de_json))  

Комментарии:

1. Их показатели различны. Как вы можете видеть, один из них-это индекс диапазона, поэтому значения генерируются динамически, в то время как другой-это просто индекс, где все значения по существу жестко закодированы.

2. Спасибо! имеет смысл

Ответ №1:

Сбросьте их индексы.

 df = df.reset_index(drop=True)  

При некоторых условиях панды сбросят индекс, но сохранят старый индекс в новом столбце. drop=True будет следить за тем, чтобы этого не произошло.

Комментарии:

1. Это было бы излишним left , не так ли? поскольку новый индекс будет равен а RangeIndex(5) , верно?

2. Мне нужно не забывать использовать это drop=True чаще

3. Да @wjandrea, конечно, но на всякий случай 🙂