如何用np.savetxt的fmt参数同时指定列类型与制表符分隔?
解决np.savetxt指定多格式与制表符分隔的问题
要同时通过fmt参数指定列数据类型和制表符分隔,只需将制表符(用转义字符\t表示)直接嵌入到格式字符串中,同时注意数据的正确转换,具体操作如下:
核心解决思路
- 多格式字符串模式下
delimiter参数会被忽略,必须把制表符\t直接写在fmt的各格式符之间 - 传入
np.savetxt的数据建议转为numpy数组(如df.values),避免DataFrame的索引/列名干扰格式输出 - 格式符需与列数据类型严格匹配:字符串用
%s,整数用%d
修正后的示例代码
import numpy as np import pandas as pd # 构造样本数据框 df = pd.DataFrame([ ["DTL", "3E046ZM/A", "190198848376", 0], ["DTL", "3E047ZM/A", "190198848406", 0], ["DTL", "3E309ZM/A", "190198937339", 0] ], columns=["col1", "col2", "col3", "col4"]) # 格式字符串:每个类型符间用\t分隔 fmt = '%s\t%s\t%s\t%d' # 传入DataFrame的numpy数组形式,执行保存 np.savetxt("test.txt", df.values, fmt=fmt)
额外注意事项
- 如果第三列(如示例中的
190198848376)是数值类型但需要保存为字符串格式,需先将该列转为字符串类型:df['col3'] = df['col3'].astype(str) - 不要直接在代码中输入制表符(按Tab键),而是用
\t转义字符,避免代码排版或解析时出现歧义
内容的提问来源于stack exchange,提问作者Bengu Atici
相关产品推荐
相关产品推荐

