首页 > 解决方案 > 如何编写一个循环,在多个熊猫数据帧中删除 NaN 值

问题描述

我在 python 中编写了以下代码,以在单独的 dfs 中将多个 csv 文件读入 pandas:

dfs = []
for f in filenames:
    df = pd.read_csv(f, encoding= 'unicode_escape')
    dfs.append(df)

它工作得很好,我可以索引我创建的 dfs 对象来访问不同的数据框,如下所示:

dfs[0], dfs[1], etc

但是,数据帧中有 NaN 值,我正在尝试编写第二个循环来迭代并删除它们。我确信这会起作用,但是,它没有:

for df in dfs:
  df.dropna()

单元格运行了,但是当我调用 dfs[0] 时,NaN 仍然存在。这可能是因为数据框在列表中吗?注意,我想用 Nans 删除行,而不是列。

我将不胜感激任何帮助。谢谢!

标签: pythonpandasdataframefor-loopnan

解决方案


你需要重新分配它

for i in range(len(dfs)):
    dfs[i]=dfs[i].dropna()

或添加inplace

for df in dfs:
  df.dropna(inplace=True)

推荐阅读