从 .csv 文件中删除一些行会导致向其中添加 NaN 列

Posted

技术标签:

【中文标题】从 .csv 文件中删除一些行会导致向其中添加 NaN 列【英文标题】:deleting some rows from .csv file cause adding NaN columns to it 【发布时间】:2022-01-19 21:48:43 【问题描述】: python版本:3.7.11 熊猫版本:1.1.3 IDE:Jupyter Notebook 用于打开和重新保存 .csv 文件的软件:Microsoft Excel

我有一个 .csv 文件。你可以从这里下载:https://icedrive.net/0/35CvwH7gqr

在 .csv 文件中,我查找具有空白单元格的行,并在找到这些行后将其删除。为此,我遵循以下说明:

我用 Microsoft Excel 打开了 .csv 文件。 我按 F5,然后在“参考”字段中输入“A1:E9030”,然后我点击确定。 我再次按F5,然后点击“Special...”按钮,选择“Blanks”,然后点击ok 在“单元格”的“主页”选项卡中,单击“删除”,然后单击“删除工作表行” 保存文件并关闭它。

这是删除一些行后的文件:https://icedrive.net/0/cfG1dT6bBr

但是当我运行下面的代码时,似乎在删除一些行后添加了额外的列。

import pandas as pd

# The file doesn't have any header.
my_file = pd.read_csv(path_to_my_file, header=None)

my_file.head()

print(my_file.shape)

输出:

(9024, 244)

你也可以用记事本打开文件看看区别:

删除某些行之前的.csv文件:

删除一些行后的.csv文件:

在删除行之前,my_file.shape 向我显示 5 列,但在删除一些行后,它向我显示 244 列数。

问题:

如何在 excel 中或通过其他方式删除行,以免出现此问题?

注意:我无法使用 pandas 删除这些行,因为 pandas 不会自动考虑这些行,因此我应该手动执行此操作。

提前感谢您的帮助。

【问题讨论】:

我建议按原样加载 csv 并使用 python 在 jupyter 中删除您需要的所有内容 删除然后重新保存时运行的是什么程序? @JonSG Microsoft Excel 【参考方案1】:

我不熟悉您在问题的第一部分中执行的操作,但我建议使用不同的解决方案。 Pandas 只会将 np.nan 对象识别为空。因此,在这种情况下,我们可以先将 .csv 文件加载到 Pandas 中,然后将空单元格替换为 np.nan 值:

>>> import pandas as pd
>>> import numpy as np

>>> my_file = pd.read_csv(path_to_my_file, header=None)
>>> my_file = my_file.replace('', np.nan, inplace=True)

然后,我们可以让 pandas 删除所有包含 np.nan 的行:

>>> my_file = my_file.dropna(inplace=True)

这应该会给你想要的输出。我认为直接从 IDE 处理数据帧是一个好习惯。希望这有帮助!

【讨论】:

以上是关于从 .csv 文件中删除一些行会导致向其中添加 NaN 列的主要内容,如果未能解决你的问题,请参考以下文章

如何从.csv文件向JTable中的列添加标头

从 UITableView 中删除行会导致部分标题问题?

将换行符 (\n) 添加到 CSV 文件中?

Eclipse 自动从 .properties 文件中删除行

从数据库中的 CSV 文件向字段添加值

使用 Python csv.reader 从文本文件中删除 html 格式“>”