Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python替换向量数据0中所有类似(--)的字符_Python_Python 2.7 - Fatal编程技术网

如何使用python替换向量数据0中所有类似(--)的字符

如何使用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作为字符,以便我能够理解

嗨,我在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作为字符,以便我能够理解它何时变为零。此时,我正在手动执行此操作,但希望以编程方式执行此操作。如有任何建议,将不胜感激。
谢谢

加载数据文件后,请将每列中的
'-'
替换为
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(…)
。好的,谢谢。最后但并非最不重要的一点是,我在同一问题中又增加了一个标准。当我的数据为零时,我想给它们单独的颜色,比如说红色,这样我就可以区别于其他元素。有可能吗