python - 为什么 'na_values' 在 Pandas 中不能正常工作?

标签 python pandas

我正在阅读this file并将 -1 替换为 nan:

import pandas as pd
import os

path = "./data/"

filename = os.path.join(path,"SN_d_tot_V2.0.csv")    
names = ['year', 'month', 'day', 'dec_year', 'sn_value' , 'sn_error', 'obs_num']
df = pd.read_csv(filename,sep=';',header=None,names=names,na_values=['-1'], index_col=False)

但替换仅适用于 sn_error 列(float64),不适用于 sn_value(int64) 。怎么了?如何替换所有-1值?

enter image description here

最佳答案

该列有前导空格,您需要在读取 CSV 时将其删除。

df = pd.read_csv('http://www.sidc.be/silso/INFO/sndtotcsv.php', 
                 sep=r'\s*;\s*', 
                 engine='python', 
                 header=None, 
                 names=names,
                 na_values=[-1], 
                 index_col=False)
df.head()

   year  month  day  dec_year  sn_value  sn_error  obs_num
0  1818      1    1  1818.001       NaN       NaN        0
1  1818      1    2  1818.004       NaN       NaN        0
2  1818      1    3  1818.007       NaN       NaN        0
3  1818      1    4  1818.010       NaN       NaN        0
4  1818      1    5  1818.012       NaN       NaN        0

关于python - 为什么 'na_values' 在 Pandas 中不能正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56825958/

相关文章:

python - IPython _repr_html_

python - 通过 App Engine 发送的邮件中的附件无法在每个邮件客户端/设备上读取

python - 使用选定值作为索引的 Pandas 数据透视表

python - Pandas - 计算 df 中的行以发现每天的存活率

python - 删除 pandas df 中的列表字符串开头

python - Pandas 匹配列表中的元素

python - 我正在使用 fastcgi 运行 nginx,这就是我为 python 应用程序提供服务所需的全部吗?

python - 如何编写一个每次运行都给出相同输出的 Python 程序?

python - Pandas fillna() 未按预期工作

python - 在条件列表理解中使用 or 语句来过滤数据框中的列