python - df.fillna 或 df.replace 没有消除我的 .csv 文件中的 NaN

标签 python pandas csv pycharm

我知道这里有很多类似的问题。但似乎没有一个答案对我有用。请注意,我是一名初学者程序员,只是通过 Youtube 教程才学到这一点。请注意,我使用的是 Mac 操作系统和 PyCharm

我的程序下载this .csv通过我在 Youtube 上找到的这段代码进行文件

def download_data(csv_url):
    response = request.urlopen(csv_url)
    csv = response.read()
    csv_str = str(csv)
    lines = csv_str.split ("\\n")
    dest_url = r'NO_AM1H.csv'
    fx = open(dest_url,"w")
    for line in lines:
        fx.write (line + "\n")
    fx.close()

然后我读取 .csv 并设置分隔符。 .csv 中的许多值都 <7 或为空 (NaN)。我尝试替换它们,如图所示,但是当我打印数据帧(df)时,它仍然显示 NaN 和 <7

df = pd.read_csv('NO_AM1H.csv',delimiter=';')
df = df.replace(np.nan,0)
df = df.replace('<7',0)

print(df.tail(4))

任何帮助将不胜感激,并对任何菜鸟错误表示歉意。谢谢

最佳答案

您可以做的快速修复是在读取 csv 时标记可能的 NA 值,如下所示:

方法一:

df = pd.read_csv('NO_AM1H.csv',delimiter=';', na_values=['<7', 'NaN','nan', None])

# then fill the NAs
df = df.fillna(0)

方法2:

df = df.applymap(lambda x: None if x == '<7' else x)

替换 pandas 中的 float NA 的解决方法是:

df = df.applymap(lambda x: 0 if str(x) == 'nan' else x)

关于python - df.fillna 或 df.replace 没有消除我的 .csv 文件中的 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59813237/

相关文章:

python - 使用 linregress 参数中使用的查询来迭代分组

javascript - 有没有办法在 Javascript 中按行号将 CSV 数据存储在数组中?

python - 按一列中出现的频率对整个 csv 进行排序

python - 在数据框的列之间创建成对关系

sql - (Scala) 在 Apache Spark 中将字符串转换为日期

python - 如何让matplotlib连接所有的散点?

javascript - PyQT4 Javascript 警报

python - 如何找到容器的docker镜像?

python - GAE 上的 Twitter 流媒体

python - Pandas - 获取日期和当前时间之间的营业时间