0

我有一个导入到熊猫的大型 csv 文件。第一行是列的标题(即使它是值)。我的目标是将 -999.999 的所有值替换为 0。

我已经尝试使用 df.colums = df.iloc[0] 将我的第一行作为标题,但没有成功。要替换我尝试使用 df.replace 的值,但它似乎没有找到 -999.99 值。

import pandas as pd

df = pd.read_csv('Test.csv') # importer le dossier CSV 

df.columns = df.iloc[0]
df.replace(-999.999, 0, inplace=True)

df.to_csv('test2.csv')

CSV 文件如下所示,其中第一列 (0-1-2...) 是自动创建的,而不是原始数据的一部分。

  -120;-119.7;-119.4;-119.1;-118.8;-118.5;-118.2;-117.9
0  -999.999;-999.999;-999.999;20.1;1.2;89.5;-999....   
1  -999.999;-999.999;4.6;25.6;8.9;-999.999;-999.9...   
2  -999.999;-999.999;8.66;12.6;7.6;-999.999;13.98...   
3  -999.999;-999.999;9.12;6.98;0.6;45.3;12.4;-999...   
4  -999.999;-999.999;13.36;4.56;3.9;2.36;-999.999...   
5  -999.999;-999.999;-999.999;21;45.2;-999.999;-9...   
4

2 回答 2

2

第一个问题是您需要指定分隔符,第二个问题replace是它将被转换为float64因此replace(-999.999, 0)无法使用。

from io import StringIO

s = '''-120;-119.7;-119.4;-119.1;-118.8;-118.5;-118.2;-117.9
-999.999;-999.999;-999.999;20.1;1.2;89.5;-999
-999.999;-999.999;4.6;25.6;8.9;-999.999;-999.9
-999.999;-999.999;8.66;12.6;7.6;-999.999;13.98
-999.999;-999.999;9.12;6.98;0.6;45.3;12.4;-999
-999.999;-999.999;13.36;4.56;3.9;2.36;-999.999
-999.999;-999.999;-999.999;21;45.2;-999.999;-9'''

df = pd.read_csv(StringIO(s), sep=';')

df = df.replace(df.iloc[0,0], 0) # specify a cell with the value you want to replace

或者你可以使用一个float64数字:

df.replace(-999.9989999999999, 0)

   -120  -119.7  -119.4  -119.1  -118.8  -118.5  -118.2  -117.9
0   0.0     0.0    0.00   20.10     1.2   89.50 -999.00     NaN
1   0.0     0.0    4.60   25.60     8.9    0.00 -999.90     NaN
2   0.0     0.0    8.66   12.60     7.6    0.00   13.98     NaN
3   0.0     0.0    9.12    6.98     0.6   45.30   12.40  -999.0
4   0.0     0.0   13.36    4.56     3.9    2.36    0.00     NaN
5   0.0     0.0    0.00   21.00    45.2    0.00   -9.00     NaN

对于实际文件StringIO将替换为文件路径。

第一列,正如你所说的,是index如果你不希望它出现在输出中df.to_csv('file.csv', index=False)

于 2019-02-07T14:43:45.213 回答
0

pd.read_csv()使用默认分隔符','- 请为您的数据传递参数sep=';'。要消除输出中的索引,只需将参数传递index=Falsedf.to_csv().

于 2019-02-07T14:36:02.710 回答