如何使用python替换向量数据0中所有类似(--)的字符
嗨,我在myfile.dat文件中有3列数据。它们的顺序如下如何使用python替换向量数据0中所有类似(--)的字符,python,python-2.7,Python,Python 2.7,嗨,我在myfile.dat文件中有3列数据。它们的顺序如下 234 -642 20.20 233 -640 20.40 233.4 -- 20.60 -- -646 20.80 -- -642 21.00 234 -- 21.20 342 -- 21.40 ... ... ..... 我想使用matplotlib python绘制它们,但在此之前我想替换 --在所有列中使用0作为字符,以便我能够理解
234 -642 20.20
233 -640 20.40
233.4 -- 20.60
-- -646 20.80
-- -642 21.00
234 -- 21.20
342 -- 21.40
... ... .....
我想使用matplotlib python绘制它们,但在此之前我想替换
--在所有列中使用0作为字符,以便我能够理解它何时变为零。此时,我正在手动执行此操作,但希望以编程方式执行此操作。如有任何建议,将不胜感激。
谢谢加载数据文件后,请将每列中的
'-'
替换为0
:
new_column = [0 if cell=='--' else cell for cell in old_column]
此语句使用和生成器表达式
[f(x)for x in a_list]
加载数据文件后,将每列中的'-'
替换为0
:
new_column = [0 if cell=='--' else cell for cell in old_column]
此语句使用和一个生成器表达式
[f(x)for x in a_list]
您是否正在查找类似的内容
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()
你是在找这样的东西吗
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()
您可以使用来匹配所需的任何序列并替换它:
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)
您可以使用来匹配所需的任何序列并替换它:
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)
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[]:
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[]:
,非常感谢,我在想一些困难的事情,因此感到困惑。但这很简单。好的,只是问一下是否可以将它保存在同一个文件中,以便我可以通过同一个文件打印它,否则我必须从另一个文件加载它以进行进一步处理。是的,您可以打开该文件,然后写入同一个文件--请参见编辑。不过要小心!您还可以读取原始文件,替换内存中的内容,只需使用它,而无需保存文件。除非其他程序需要读取文件,否则这可能会更安全,也同样简单。谢谢Mark_M。我会看一遍。非常感谢。好的,因为我的目录已经满是中间文件了,所以我想出了这个主意。我已经完成了你以前的建议。我只是发现另一个问题。先前使用替换功能时,我已将其替换为所需的数据。现在在同一个向量列中,我有两个不需要的数据,即(-)和PD。在这两种情况下,我都希望替换为0。我尝试了替换('--,PD,'0'),非常感谢,我想了一些困难的事情,因此感到困惑。但这很简单。好的,只是问一下是否可以将它保存在同一个文件中,以便我可以通过同一个文件打印它,否则我必须从另一个文件加载它以进行进一步处理。是的,您可以打开该文件,然后写入同一个文件--请参见编辑。不过要小心!您还可以读取原始文件,替换内存中的内容,只需使用它,而无需保存文件。除非其他程序需要读取文件,否则这可能会更安全,也同样简单。谢谢Mark_M。我会看一遍。非常感谢。好的,因为我的目录已经满是中间文件了,所以我想出了这个主意。我已经完成了你以前的建议。我只是发现另一个问题。先前使用替换功能时,我已将其替换为所需的数据。现在在同一个向量列中,我有两个不需要的数据,即(-)和PD。在这两种情况下,我都希望替换为0。我尝试了替换('--,PD',0'),谢谢您的回复。但我不知道如何定义旧的_列和单元格。谢谢您的回复。但我不知道如何定义旧的_列和单元格。这是我在python脚本中的一个步骤。这是我从一个复杂的输入文本文件中提取的。当我提取特定列并保存到另一个文本文件时,我遇到了前面的问题。所以我的想法是如何用0删除(--)缺失的数据,然后绘制它。所以我想保持格式不变。毫无疑问,在用0替换丢失的数据后,我是否可以将其保存在同一个文件中已理解,
pandas
非常适合处理结构化数据(基本上是python中的excel)-您可能需要进行探索,例如,您可以使用pd.write_csv(…)
。好的,谢谢。最后但并非最不重要的一点是,我在同一问题中又增加了一个标准。当我的数据为零时,我想给它们单独的颜色,比如说红色,这样我就可以区别于其他元素。是否可以这样绘制。这是一个单独的问题,一旦你解决了这个部分,我会单独问。好的,现在我已经完成了我的过程,并给出了Mark_M的建议。我也理解了你的部分。前一部分是我的好奇心。这是我在python脚本中的一个步骤。这是我从一个复杂的输入文本文件中提取的。当我提取特定列并保存到另一个文本文件时,我遇到了前面的问题。所以我的想法是如何用0删除(--)缺失的数据,然后绘制它。所以我想保持格式不变。毫无疑问,在用0替换丢失的数据后,我是否可以将其保存在同一个文件中已理解,pandas
非常适合处理结构化数据(基本上是python中的excel)-您可能需要进行探索,例如,您可以使用pd.write_csv(…)
。好的,谢谢。最后但并非最不重要的一点是,我在同一问题中又增加了一个标准。当我的数据为零时,我想给它们单独的颜色,比如说红色,这样我就可以区别于其他元素。有可能吗