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()
но не работает.
как это сделать?
Ответы
Ответ 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
, и позволяет сохранять столбец, индексные метки, если вы хотите.