Ich hatte ein ähnliches Problem beim Versuch, eine tabstoppgetrennte Tabelle mit Leerzeichen, Kommas und Anführungszeichen zu lesen:
1115794 4218 "k__Bacteria", "p__Firmicutes", "c__Bacilli", "o__Bacillales", "f__Bacillaceae", ""
1144102 3180 "k__Bacteria", "p__Firmicutes", "c__Bacilli", "o__Bacillales", "f__Bacillaceae", "g__Bacillus", ""
368444 2328 "k__Bacteria", "p__Bacteroidetes", "c__Bacteroidia", "o__Bacteroidales", "f__Bacteroidaceae", "g__Bacteroides", ""
import pandas as pd
# Derselbe Fehler für read_table
counts = pd.read_csv(path_counts, sep='\t', index_col=2, header=None, engine = 'c')
pandas.io.common.CParserError: Fehler beim Tokenisieren von Daten. C-Fehler: nicht genügend Speicher
Dies legt nahe, dass es etwas mit dem C-Analysierungs-Engine (dem Standardmotor) zu tun hat. Vielleicht ändert sich etwas, wenn Sie zu einem Python-Motor wechseln.
counts = pd.read_table(path_counts, sep='\t', index_col=2, header=None, engine='python')
Segmentation fault (core dumped)
Das ist jetzt ein anderer Fehler.
Wenn wir fortfahren und versuchen, Leerzeichen aus der Tabelle zu entfernen, ändert sich der Fehler des Python-Motors erneut:
1115794 4218 "k__Bacteria","p__Firmicutes","c__Bacilli","o__Bacillales","f__Bacillaceae",""
1144102 3180 "k__Bacteria","p__Firmicutes","c__Bacilli","o__Bacillales","f__Bacillaceae","g__Bacillus",""
368444 2328 "k__Bacteria","p__Bacteroidetes","c__Bacteroidia","o__Bacteroidales","f__Bacteroidaceae","g__Bacteroides",""
_csv.Error: ' ' erwartet nach '"'
Und es wird klar, dass pandas Probleme hatte, unsere Zeilen zu analysieren. Um eine Tabelle mit Python-Engine zu analysieren, musste ich vorher alle Leerzeichen und Anführungszeichen aus der Tabelle entfernen. Der C-Motor stürzte derweil selbst mit Kommas in den Zeilen ab.
Um zu vermeiden, eine neue Datei mit Ersetzungen zu erstellen, habe ich das gemacht, da meine Tabellen klein sind:
from io import StringIO
with open(path_counts) as f:
input = StringIO(f.read().replace('", ""', '').replace('"', '').replace(', ', ',').replace('\0',''))
counts = pd.read_table(input, sep='\t', index_col=2, header=None, engine='python')
tl;dr
Ändern Sie die Analyse-Engine, versuchen Sie, jegliche nicht-trennenden Anführungszeichen/Kommas/Leerzeichen in Ihren Daten zu vermeiden.