我有这个数据框
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
我想将其保存为具有此格式的文本文件
X Y Z Value
18 55 1 70
18 55 2 67
18 57 2 75
18 58 1 35
19 54 2 70
我试过这段代码但是没有用:
np.savetxt('xgboost.txt', a.values, delimiter ='\t')
TypeError: Mismatch between array dtype ('object') and format specifier ('%.18e %.18e %.18e')
答案 0 :(得分:16)
CSV 表示逗号分隔值。这是纯文本(ansi)。
TXT实际上不是一种文件格式,它可能意味着不同环境中的多种内容。通常,您以CSV(逗号分隔值)或TSV(制表符分隔值)导出表。您应该选择哪个主要取决于您的数据:如果您的数据中包含逗号而不是制表符,则应选择TSV。
您不必使用np.savetxt()
。您可以使用df_object.to_csv()
这样做:
df_object.to_csv('xgboost.txt', sep='\t', index=False)
答案 1 :(得分:11)
这几乎完全与以下内容重复:
Python, Pandas : write content of DataFrame into text File
我在这里再次报告所引用的SO问题的答案,并通过一些非常小的修改来适应这种情况 您可以使用两种方法。
np.savetxt()
,在这种情况下,您应该具有以下内容:
np.savetxt('xgboost.txt', a.values, fmt='%d', delimiter="\t", header="X\tY\tZ\tValue")
假设a
是数据帧。当然,您可以更改所需的分隔符(制表符,逗号,空格等)
我附上答案和@MYGz答案中提到的另一个选择是使用to_csv方法,即:
a.to_csv('xgboost.txt', header=True, index=False, sep='\t', mode='a')