【问题标题】:deleting some rows from .csv file cause adding NaN columns to it从 .csv 文件中删除一些行会导致向其中添加 NaN 列
【发布时间】: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

标签: python python-3.x pandas csv


【解决方案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 处理数据帧是一个好习惯。希望这有帮助!

【讨论】:

    猜你喜欢
    • 2021-02-16
    • 1970-01-01
    • 1970-01-01
    • 2018-06-07
    • 1970-01-01
    • 2023-03-15
    • 2020-07-18
    • 2023-01-15
    • 2014-03-26
    相关资源
    最近更新 更多