Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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 3.x 如何用熊猫替换整个CSV文件中的特定值?_Python 3.x_Pandas_Dataframe_Indexing - Fatal编程技术网

Python 3.x 如何用熊猫替换整个CSV文件中的特定值?

Python 3.x 如何用熊猫替换整个CSV文件中的特定值?,python-3.x,pandas,dataframe,indexing,Python 3.x,Pandas,Dataframe,Indexing,我有一个大的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

我有一个大的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...   

pd.read_csv()
使用默认分隔符
,“
-请传递参数
sep=”;”用于您的数据。要消除输出中的索引,只需将参数
index=False
传递给
df.To_csv()

pd.read_csv()
使用默认分隔符
,“
-请传递参数
sep=”;”用于您的数据。要消除输出中的索引,只需将参数
index=False
传递给
df.To_csv()

第一个问题是需要指定分隔符
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
将替换为文件路径


第一列,如您所称,是
索引
,如果您不想在输出中只
df.to_csv('file.csv',index=False)
第一个问题是您需要指定分隔符
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
将替换为文件路径


第一列,如您所称,是
索引
,如果您不希望它出现在输出中,只需
df.to_csv('file.csv',index=False)

您的数据是否可以作为字符串加载而不是浮动?在pd.read_csv之后,在这个问题中显示
df.info()
。df.info()给出以下内容:RangeIndex:6个条目,0到5个数据列(共1列):-120-119.7;-119.4;-119.1;-118.8;-118.5;-118.2;-117.9 6非空对象数据类型:对象(1)内存使用:128.0+字节>CSV文件如下所示,其中自动创建了第一列(0-1-2…)。。。这就是所谓的索引(
pd.index
)如果你想做一些研究,你的数据可能是以字符串而不是浮点数的形式加载的吗?在pd.read_csv之后,在这个问题中显示
df.info()
。df.info()给出以下内容:RangeIndex:6个条目,0到5个数据列(共1列):-120-119.7;-119.4;-119.1;-118.8;-118.5;-118.2;-117.9 6非空对象数据类型:对象(1)内存使用:128.0+字节>CSV文件如下所示,其中自动创建了第一列(0-1-2…)。。。如果你想做一些研究,那就是所谓的索引(
pd.index