您好myfile.dat文件中有3列数据。它们的订购方式如下。
20:40
我想用matplotlib python绘制它们但在此之前我想要替换它们 - 在所有列中字符为0,以便我可以理解它变为零的时间。这时我手动完成,但想以编程方式进行。任何建议将受到高度赞赏。 谢谢
答案 0 :(得分:1)
你只是在寻找这样的东西吗?
infile = open('test.dat')
outfile = open('clean.dat', 'w')
for line in infile:
outfile.write(line.replace('--', '0'))
outfile.close()
infile.close()
clean.dat
现在有数据' - '替换为' 0'例如:
234 -642 20.20
233 -640 20.40
233.4 0 20.60
0 -646 20.80
0 -642 21.00
234 0 21.20
342 0 21.40
修改强> 要打开并覆盖某个文件,您可以执行以下操作:
FILE = 'test.dat
f = open(FILE)
infile = f.read() #infile is one big string with the whole doc
f.close()
outfile = open(FILE, 'w') #this will OVERWIRTE the original!!
outfile.write(infile.replace('--', '0'))
outfile.close()
答案 1 :(得分:1)
pandas
是一个很好的图书馆,可以阅读结构化数据并与matplotlib
配合使用
在阅读文件时,您可以指定其他NaN
值,这些值很容易替换为.fillna(0)
,例如:
In []:
import pandas as pd
df = pd.read_csv('myfile.dat', delim_whitespace=True, header=None, na_values=['--']).fillna(0)
df
Out[]:
0 1 2
0 234.0 -642.0 20.2
1 233.0 -640.0 20.4
2 233.4 0.0 20.6
3 0.0 -646.0 20.8
4 0.0 -642.0 21.0
5 234.0 0.0 21.2
6 342.0 0.0 21.4
In []:
df.plot()
Out[]:
答案 2 :(得分:0)
加载数据文件后,将'--'
替换为每列中的0
:
new_column = [0 if cell=='--' else cell for cell in old_column]
此语句使用conditional operator和生成器表达式[f(x) for x in a_list]
。
答案 3 :(得分:0)
您可以使用Regular Expressions来匹配您想要的任何序列并替换它:
import re
file_path = './t'
file_out_path = './tt'
# Open the source file
# it will close it automatically at the end of the `with` block
with open(file_path, 'r+') as source:
content = source.read()
# match the sequence you want and replace it
content = re.sub('--', '00', content)
# You can do with it as you wish, like writing it back to another file
with open(file_out_path, 'w') as destination:
destination.write(content)