从 .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 列的主要内容,如果未能解决你的问题,请参考以下文章