我有像这样的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()
这是不正确的。如何做到这一点?
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
,您必须传递使用追加模式创建的文件句柄。
执行此操作的本机方法是使用
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
属性打印哪些列,让您可以保留列、索引标签(如果您愿意),并且具有用于间距等的其他属性。
您可以使用 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
可以直接写入文件,有关更多信息,您可以参考上面链接的文档。
聚会迟到:试试这个>
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
@AHegde - 要获取制表符分隔的输出,请使用分隔符 sep=' '。
对于 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文件,然后将信息转换为文本文件。
根据需要,我们可以使用 for 循环和我们想要在文本文件中的数据类型。
我使用了稍微修改过的版本:
with open(file_name, 'w', encoding = 'utf-8') as f:
for rec_index, rec in df.iterrows():
f.write(rec['<field>'] + '\n')
我必须将数据帧字段(已分隔)的内容写入文本文件。
如果您有一个 Dataframe 是 pandas Compare 方法的输出,则打印时这样的数据框如下所示:
grossRevenue netRevenue defaultCost
self other self other self other
2098 150.0 160.0 NaN NaN NaN NaN
2110 1400.0 400.0 NaN NaN NaN NaN
2127 NaN NaN NaN NaN 0.0 909.0
2137 NaN NaN 0.000000 8.900000e+01 NaN NaN
2150 NaN NaN 0.000000 8.888889e+07 NaN NaN
2162 NaN NaN 1815.000039 1.815000e+03 NaN NaN
我希望将整个数据框持久保存到文本文件中,如上面所示。使用 pandas 的
to_csv
或 numpy 的 savetxt
无法实现此目标。我使用普通的旧print
将其记录到文本文件中:
with open('file1.txt', mode='w') as file_object:
print(data_frame, file=file_object)