我有像这样的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()
但它不起作用。 这该怎么做?
答案 0 :(得分:71)
您可以使用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
您必须传递使用追加模式创建的文件句柄。
答案 1 :(得分:20)
您可以使用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
可以直接写入文件,有关详细信息,请参阅上面链接的文档。
答案 2 :(得分:5)
晚会:试试这个>
#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
答案 3 :(得分:2)
目前最好的方法是使用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
属性打印的列,并可以保留列和索引标签(如果需要)。
答案 4 :(得分:1)
如何以制表符分隔格式将Excel数据获取到文本文件。 需要使用熊猫以及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用于循环和文本文件中所需的数据类型。
答案 5 :(得分:0)
@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')
答案 6 :(得分:0)
我使用了一个稍微修改的版本:
with open(file_name, 'w', encoding = 'utf-8') as f:
for rec_index, rec in df.iterrows():
f.write(rec['<field>'] + '\n')
我必须将数据框字段(已定界)的内容写为文本文件。