web-dev-qa-db-fra.com

Python, Pandas: écrit le contenu de DataFrame dans un fichier texte

J'ai pandas DataFrame comme ça

        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 écrire ces données dans un fichier texte de cette façon,

18 55 1 70   
18 55 2 67 
18 57 2 75     
18 58 1 35  
19 54 2 70 

J'ai essayé quelque chose comme

f = open(writePath, 'a')
f.writelines(['\n', str(data['X']), ' ', str(data['Y']), ' ', str(data['Z']), ' ', str(data['Value'])])
f.close()

mais ça ne marche pas. comment faire ça?

58
Sounak

Vous pouvez simplement utiliser np.savetxt et accéder à l'attribut np _.values_:

_np.savetxt(r'c:\data\np.txt', df.values, fmt='%d')
_

rendements:

_18 55 1 70
18 55 2 67
18 57 2 75
18 58 1 35
19 54 2 70
_

ou to_csv :

_df.to_csv(r'c:\data\pandas.txt', header=None, index=None, sep=' ', mode='a')
_

Remarque pour _np.savetxt_ vous devez transmettre un descripteur de fichier créé avec le mode d’ajout.

83
EdChum

Vous pouvez utiliser pandas.DataFrame.to_csv () et définir les paramètres index et header sur False:

In [97]: print df.to_csv(sep=' ', index=False, header=False)
18 55 1 70
18 55 2 67
18 57 2 75
18 58 1 35
19 54 2 70

pandas.DataFrame.to_csv peut écrire directement dans un fichier. Pour plus d'informations, vous pouvez vous reporter aux documents liés ci-dessus.

22
Anzel

En retard à la fête: Essayez ceci>

#pd: your pandas dataframe
base_filename = 'Values.txt'
with open(os.path.join(WorkingFolder, base_filename),'w') as outfile:
    pd.to_string(outfile)
#Neatly allocate all columns and rows to a .txt file
5
Rene Duchamp