python - 熊猫保存 to_csv 格式而不是制表符空格
问题描述
我想使用熊猫框架将一些数据写入 .dat 文件。保存不是其格式的问题。我使用过 sep = '\t' 但有时它只会在数据之间放置一个制表符。
我的代码如下所示:
data.reindex(columns = ['n','Burn_Gain','V','I','I_smooth']).to_csv(dat_file_path,index = False,
header = False, sep = '\t')
结果数据:
1.0 1 0.01785000041127 5.435180664063e-06 5.435180664063e-06
1.0 1 0.01934999972582 5.679321289062e-06 5.679321289062e-06
1.0 1 0.02085000090301 5.89599609375e-06 5.89599609375e-06
1.0 1 0.02235000021756 6.11572265625e-06 6.11572265625e-06
1.0 1 0.0238499995321 6.4453125e-06 6.4453125e-06
1.0 1 0.0253500007093 6.658935546875e-06 6.658935546875e-06
1.0 1 0.02685000002384 6.771850585937e-06 6.771850585937e-06
1.0 1 0.02834999933839 7.015991210937e-06 7.015991210937e-06
1.0 1 0.02985000051558 7.232666015625e-06 7.232666015625e-06
为什么?我该如何解决这个问题?
我还尝试设置我的代码,以便每当第一列更改值时,保存数据文件都会添加一个空行。如果有人有比使用 f.readlines() 和循环更简洁的方法,请告诉我。谢谢!
解决方案
当你在你的眼中阅读它时,我认为它是文件中的标签字符。但实际上实际文件本身只是另存为\t
:
df_str = '''
1.0 1 0.01785000041127 5.435180664063e-06 5.435180664063e-06
1.0 1 0.01934999972582 5.679321289062e-06 5.679321289062e-06
1.0 1 0.02085000090301 5.89599609375e-06 5.89599609375e-06
1.0 1 0.02235000021756 6.11572265625e-06 6.11572265625e-06
1.0 1 0.0238499995321 6.4453125e-06 6.4453125e-06
1.0 1 0.0253500007093 6.658935546875e-06 6.658935546875e-06
1.0 1 0.02685000002384 6.771850585937e-06 6.771850585937e-06
1.0 1 0.02834999933839 7.015991210937e-06 7.015991210937e-06
1.0 1 0.02985000051558 7.232666015625e-06 7.232666015625e-06
'''
df = pd.read_csv(io.StringIO(df_str.strip()), sep='\s+', index_col=False, header=None)
df.to_csv('t1.csv', sep='\t', header=None)
# !cat t1.csv
list(open('t1.csv'))
# ['0\t1.0\t1\t0.01785000041127\t5.435180664063e-06\t5.435180664063e-06\n',
# '1\t1.0\t1\t0.01934999972582\t5.679321289062e-06\t5.679321289062e-06\n',
# '2\t1.0\t1\t0.02085000090301\t5.89599609375e-06\t5.89599609375e-06\n',
# '3\t1.0\t1\t0.02235000021756\t6.11572265625e-06\t6.11572265625e-06\n',
# '4\t1.0\t1\t0.0238499995321\t6.4453125e-06\t6.4453125e-06\n',
# '5\t1.0\t1\t0.0253500007093\t6.658935546875e-06\t6.658935546875e-06\n',
# '6\t1.0\t1\t0.02685000002384\t6.771850585937e-06\t6.771850585937e-06\n',
# '7\t1.0\t1\t0.02834999933839\t7.015991210937e-06\t7.015991210937e-06\n',
# '8\t1.0\t1\t0.02985000051558\t7.232666015625e-06\t7.232666015625e-06\n']
推荐阅读
- r - 网页在浏览器中工作,但不是来自 R:SSL 证书问题:证书已过期
- java - 序列化json时的动态属性名
- java - 使用 jooq dsl 插入超过 22 个字段
- r - 系统在 R 中使用 mlogit 在计算上是奇异的
- python - 如何将 Lab 颜色空间更改为 RGB 0-255
- mongodb - MongoDB 按字段查找对象数组(连接条件和不相关的子查询)
- java - Thymeleaf 与 JSP - 返回 ModelAndView
- selenium - 如何在 Vividus 工具中更改日期?
- laravel - 为什么 after_or_equal:现在不能在 Laravel 的日期验证器中正常工作
- git - git最好的方法来聚合分支的子部分以掌握没有分支历史