オリジナルのパンダデータフレームがあります。df
としましょう。私はcsvファイルにデータフレームを変換し、それを元にpandasデータフレームに変換します。 df.equals(新しいデータフレーム)を呼び出すと、falseを返します。 1つのエラーがインデックス作成がオフになる可能性があるため、新しいデータフレームのインデックスをcsvファイルの最初の列(元のデータフレームのインデックス)に設定しましたが、同じ結果が得られました。データフレームをCSVに変換してデータフレームに戻した後にfalseを返すpd.equals()
例コード:
import pandas as pd
df = <stuff here that aggregates other dataframes into one>
file_name = 'test/aggregated_reports.csv'
df.to_csv(file_name)
df2 = pd.read_csv(file_name, index_col=0)
assert df.equals(df2)
Iが再びCSVにDF2を変換し2つのCSV(FILE_NAMEとdf2.to_csv()
から作成したCSV)を比較することによって、いくつかの手動テストを行なったし、それらが同一であるように見えたので、私は」元のデータフレームをcsvファイルに変換するときに「差分」が発生したと仮定しています。しかし、私はまだそれを理解することはできません...
ここで "違い"を引き起こしている可能性のある洞察は非常に高く評価されます!
ああも、それは良い点だ、山車を考えていませんでした。私のデータフレームは、実際には文字列と数字が混在したレポートなので、(df-df2)は動作しません。潜在的な浮動小数点の丸め誤差を考慮した回避策がありますか? – Louis
これが私の質問をより明確にするならば、私のデータフレームには文字列、数字、空(空)が混在しています。 – Louis
ああ、文字列を無視する方法があるかどうかはわかりません。あなたは(df == df2)を試みることができます。これは真偽値のデータフレームを返します。列に作用する.all()または.count()で集計すると、問題のある箇所が絞り込まれます。 –