J'ai besoin de lire un fichier dans python pandas du type suivant
"column1","column2","column3","column4"
"value1","value,1","value2","value3"
"value5","value6","value7","value8"
"value32","value21","value,31","value,44"
J'ai essayé d'utiliser
file1 = pd.read_csv('sample.txt',sep=',\s+',skipinitialspace=True,quoting=csv.QUOTE_ALL,engine=python)
il dit quelque chose comme Valueerro (attendu certaines lignes ont quelque chose d'autre) Pas exactement
J'ai besoin de lire un grand fichier CSV de ce type et de le charger sur DataFrame. Quels changements dois-je apporter pour le lire correctement?.
Utilisez In python pandas sep=',\s*'
à la place de sep=',\s+'
, il fera de l'espace optionnel après chaque virgule:
file1 = pd.read_csv('sample.txt',sep=',\s*',skipinitialspace=True,quoting=csv.QUOTE_ALL,engine='python')
Les virgules à l'intérieur des citations doubles sont OK, il est permis par la norme RFC4180.
En ce qui concerne " "
Intérieur des valeurs de données (telles que "Valeur" "13") - Vous devrez nettoyer le fichier source avant de traiter. Si des devis doubles restent ensemble comme "", cela ne devrait pas être un problème car il est conforme à la norme CSV, il appelle des citations doubles échappées, mais s'il y a un espace entre deux guillemets, alors vous devez le nettoyer
Utilisation:
sed -r 's/\"\s+\"/\"\"/g' src.csv >cleared.csv
avant de nourrir le CSV à Pandas. Il va enlever l'espace entre des citations ou une course
sed -r 's/\"\s+\"//g' src.csv >cleared.csv
supprimer complètement les citations internes.
Pas besoin de préprogrammer le fichier CSV, utilisez simplement le type de moteur python:
dataset = pd.read_csv('sample.csv', sep=',', engine='python')
Je "pense" ces deux commandes, avec des guillemets simples et des citations doubles entre le nom du fichier, devraient fonctionner de la même manière (ou non?):
pD.READAD_CSV ('FileName.csv')
ou ca
pd.read_csv ("FileName.csv")