Mismatch Ich habe dieses merkwürdige Problem mit Pandas (Python 3.5)Pandas to_csv und from_csv, die Anzahl der reords
ich einen Datenrahmen speichere in CSV und dann die gleiche Datei wieder in einen Datenrahmen zu lesen. Ich erhalte eine unterschiedliche Anzahl von Datensätzen im neuen Datenrahmen. Das Merkwürdige ist, dass die Anzahl der Datensätze gestiegen ist !!
data_n.to_csv('file1.csv')
data_n1=pd.read_csv('file1.csv')
print (len(data_n),len(data_n1),len(data_n1)-len(data_n))
206637 208299 1662
Hier ist ein Code, der das Problem demonstriert:
import pandas as pd
orig = pd.DataFrame({'url':['foo\rbar', 'baz'], 'col':[1, 2]})
orig['idx'] = range(len(orig))
print(orig)
# col url idx
# 0 1 foo\rbar 0
# 1 2 baz 1
orig.to_csv('/tmp/file1.csv')
new = pd.read_csv('/tmp/file1.csv')
print(new)
# Unnamed: 0 col url idx
# 0 0 1 foo NaN
# 1 bar 0 NaN NaN
# 2 1 2 baz 1.0
Es könnte uns helfen, das Problem zu identifizieren, wenn wir sehen, wie einige der zusätzlichen Zeilen aussehen. Wenn 'data_n' einen eindeutigen Index hat, können Sie' df = data_n1.loc [data_n1.index.difference (data_n.index)] 'verwenden, um die zusätzlichen Zeilen zu isolieren. Wenn wir 'df.reset_index(). Head(). To_dict ('list')' posten, würde uns zeigen, wie einige dieser Zeilen eindeutig aussehen – unutbu
Vielen Dank für Ihre Antwort. Ich habe Ihren Code verwendet und habe das Problem auf ein Feld isoliert, das Website-URLs speichert. Einige von ihnen haben am Ende ein '\ r'. Es ist vom Typ str. In diesen Fällen erstellt Pandas eine zusätzliche Zeile mit dem Indexwert anstelle der Website. –
macht es auch etwas anderes, was sehr merkwürdig ist. Ich habe einen Index hinzugefügt: idx = Bereich (len (Daten)) Daten ['idx'] = idx Drucken (Typ (Daten ['Idx']. Iloc [0])), Daten ['Idx'] .iloc [0]. Ich bekomme Folgendes: 210885 Out [47]: (None, 0) –