Подтвердить что ты не робот

Python, Pandas: записать содержимое DataFrame в текстовый файл

Я использую pandas 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   

Я хочу записать эти данные в текстовый файл таким образом,

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

Я пробовал что-то вроде

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

но не работает. как это сделать?

4b9b3361

Ответ 1

Вы можете просто использовать np.savetxt и получить доступ к атрибуту np .values:

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

дает:

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

или to_csv:

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

Примечание для np.savetxt вам нужно будет передать дескриптор файла, который был создан в режиме добавления.

Ответ 2

Вы можете использовать pandas.DataFrame.to_csv() и установить как index, так и header на 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 может напрямую записываться в файл, для получения дополнительной информации вы можете обратиться к документам, связанным выше.

Ответ 3

Поздно к вечеринке: попробуйте это >

#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

Ответ 4

Текущий лучший способ сделать это - использовать df.to_string():

with open(writePath, 'a') as f:
    f.write(df.to_string(header = False, index = False))

выведет следующее

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

Этот метод также позволяет вам легко выбирать, какие столбцы печатать с помощью атрибута columns, и позволяет сохранять столбец, индексные метки, если вы хотите.