web-dev-qa-db-fra.com

trame de données vers file.txt python

J'ai ce dataframe

       X    Y  Z    Value 
0      18   55  1      70   
1      18   55  2      67 
2      18   57  2      75     
3      18   58  1      35  
4      19   54  2      70   

Je veux l'enregistrer en tant que fichier texte avec ce format

   X    Y  Z    Value 
   18   55  1      70   
   18   55  2      67 
   18   57  2      75     
   18   58  1      35  
   19   54  2      70   

J'ai essayé ce code mais ne fonctionne pas:

np.savetxt('xgboost.txt', a.values, delimiter ='\t')

TypeError: Mismatch between array dtype ('object') and format specifier ('%.18e %.18e %.18e')
12

Il s'agit d'un doublon presque exact des éléments suivants:
Python, Pandas: écrire le contenu de DataFrame dans un fichier texte

Je rapporte à nouveau ici la réponse de la question citée SO avec quelques très petites modifications pour s'adapter à ce cas.
Vous pouvez utiliser deux méthodes.

np.savetxt(), auquel cas vous devriez avoir quelque chose comme ceci:

np.savetxt('xgboost.txt', a.values, fmt='%d', delimiter="\t", header="X\tY\tZ\tValue")  

en supposant que a est la trame de données. Bien sûr, vous pouvez modifier le délimiteur que vous souhaitez (tabulation, virgule, espace, etc.).
L'autre option, comme mentionné dans la réponse que j'ai jointe et dans la réponse ici de @MYGz, est d'utiliser la méthode to_csv , c'est-à-dire:

a.to_csv('xgboost.txt', header=True, index=False, sep='\t', mode='a')
12
fedepad

CSV signifie des valeurs séparées par des virgules. C'est du texte brut (ansi).

TXT n'est pas vraiment un format de fichier, et cela pourrait signifier plusieurs choses dans différents contextes. En général, vous exportez des tableaux au format CSV (valeurs séparées par des virgules) ou TSV (valeurs séparées par des tabulations). Ce que vous devez choisir dépend principalement de vos données: si vos données contiennent des virgules mais pas d'onglets, vous devriez opter pour TSV.

Vous n'êtes pas obligé d'utiliser np.savetxt(). Vous pouvez y parvenir avec df_object.to_csv()

Fais-le comme ça:

df_object.to_csv('xgboost.txt', sep='\t', index=False)
21
MYGz