У меня есть 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()
но это не работает. Как это сделать?
Поздно на вечеринку: попробуйте это>
base_filename = 'Values.txt' with open(os.path.join(WorkingFolder, base_filename),'w') as outfile: df.to_string(outfile) #Neatly allocate all columns and rows to a .txt file
источник
На данный момент лучший способ сделать это - использовать
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
атрибутом, позволяет вам сохранить столбец, индексировать метки, если вы хотите, и имеет другие атрибуты для интервала и т. Д.источник
@AHegde - чтобы получить вывод с разделителями табуляции, используйте разделитель sep = '\ t'.
Для df.to_csv:
df.to_csv(r'c:\data\pandas.txt', header=None, index=None, sep='\t', mode='a')
Для np.savetxt:
np.savetxt(r'c:\data\np.txt', df.values, fmt='%d', delimiter='\t')
источник
Способ переноса данных Excel в текстовый файл в виде с разделителями табуляцией. Необходимо использовать Pandas, а также xlrd.
import pandas as pd import xlrd import os Path="C:\downloads" wb = pd.ExcelFile(Path+"\\input.xlsx", engine=None) sheet2 = pd.read_excel(wb, sheet_name="Sheet1") Excel_Filter=sheet2[sheet2['Name']=='Test'] Excel_Filter.to_excel("C:\downloads\\output.xlsx", index=None) wb2=xlrd.open_workbook(Path+"\\output.xlsx") df=wb2.sheet_by_name("Sheet1") x=df.nrows y=df.ncols for i in range(0,x): for j in range(0,y): A=str(df.cell_value(i,j)) f=open(Path+"\\emails.txt", "a") f.write(A+"\t") f.close() f=open(Path+"\\emails.txt", "a") f.write("\n") f.close() os.remove(Path+"\\output.xlsx") print(Excel_Filter)
Нам нужно сначала сгенерировать файл xlsx с отфильтрованными данными, а затем преобразовать информацию в текстовый файл.
В зависимости от требований мы можем использовать \ n \ t для циклов и типа данных, которые мы хотим в текстовом файле.
источник
Я использовал немного измененную версию:
with open(file_name, 'w', encoding = 'utf-8') as f: for rec_index, rec in df.iterrows(): f.write(rec['<field>'] + '\n')
Мне пришлось записать содержимое поля фрейма данных (которое было разделено) в виде текстового файла.
источник