web-dev-qa-db-fra.com

Comment définir un séparateur personnalisé dans les pandas to_csv ()?

D'après la documentation, je sais que pour sauvegarder en tant que fichier .csv, on peut simplement faire:

df.to_csv(sep = ';')

Cependant, j'aimerais utiliser mon séparateur personnalisé, par exemple: :::. Comment définir ::: comme séparateur?. J'ai essayé de:

df.to_csv(sep = ':::')

Et j'ai: TypeError: "delimiter" must be a 1-character string

J'ai aussi essayé de: df.to_csv('../data.csv', sep='\s*\:::', index=False) et j'ai obtenu le même résultat. Ainsi, comment puis-je définir mon propre séparateur?.

METTRE À JOUR

Étant donné que j'ai dans mon image de données |, je ne peux pas utiliser un tel caractère comme séparateur. J'ai essayé de l'enlever avec:

df.replace('\b|\b', '-', regex = True)

Cependant, cela n'a pas fonctionné. Toute alternative sur la façon de l'enlever?.

4
john doe

De toute évidence, les Pandas ne semblent pas autoriser ce comportement.

Cependant, si vous voulez absolument ":::". Pourquoi ne pas exporter le cadre de données avec un caractère inhabituel tel que "|" puis ouvrez le fichier et remplacez "|" par ":::".

C'est la seule solution que j'imagine pour obtenir le résultat souhaité.

3
Jonathan DEKHTIAR

Après tout, j'ai fait:

df['Col'] = df['Col'].str.replace('|', ':')

Afin de le supprimer de la colonne. Ensuite, j'ai corrigé un personnage différent pour séparer mon df.

2
john doe

Zipa m'a aidé avec mon problème d'utiliser des espaces consécutifs comme séparateur ici :

Cela pourrait être une solution de contournement:

  myCsv = df.astype(str).apply(lambda x: '   '.join(x), axis=1)
  myCsv.rename('   '.join(df.columns)).to_csv(file, header=True, index=False)

Peut-être en fonction de sa réponse, essayez:

myCsv = df.astype(str).apply(lambda x: ':::'.join(x), axis=1)
myCsv.rename(':::'.join(df.columns)).to_csv(file, header=True,index=False)

Cela a fonctionné pour moi, si les noms de colonne sont des chaînes

0
k0ngcrete