【问题标题】:Remove rows containing blank space in python data frame删除python数据框中包含空格的行
【发布时间】:2019-09-28 06:31:23
【问题描述】:

我将一个 csv 文件导入 Python(使用 Python 数据框),但 CSV 文件中有一些缺失值。在数据框中,我有如下行

> 08,63.40,86.21,63.12,72.78,,

我已尽一切努力删除包含与上述数据中最后一个元素相似的元素的行。没有任何效果。我不知道上面是否被归类为空白或空字符串或什么。

这是我所拥有的:

result = pandas.read_csv(file,sep='delimiter')
result[result!=',,']

这不起作用。然后我做了以下事情:

result.replace('  ', np.nan, inplace=True)
result.dropna(inplace=True)

这也不起作用。

result = result.replace(r'\s+', np.nan, regex=True)

这也不起作用。我仍然看到包含 ,, 元素的行。

我的数据框也是 100 x 1。当我从 CSV 文件导入它时,所有列都变为 1。(我不知道这是否有帮助)

谁能告诉我如何删除包含 ,, 元素的行?

【问题讨论】:

  • 所以如果它有一个空白条目,你想删除整行吗?
  • 还将how 参数添加到您的drop na 并传入any drop.na(how='any'),一旦您将空白字符串转换为NaN,这应该可以解决问题
  • 尝试在你的read_csv方法中使用na_values=[' ','']
  • @Datanovice,是的,我想删除整行。

标签: python pandas csv dataframe missing-data


【解决方案1】:

我的数据框也是 100 x 1。当我从 CSV 文件导入它时,所有列都变为 1

这可能是关键,恕我直言很奇怪。当您在 pandas DataFrame 中导入 csv 时,您通常希望每个字段都放在自己的列中,以便以后能够单独处理该列值。所以(仍然恕我直言)如果要解决这个问题是正确的解决方案。

现在直接回答您的(可能是XY 问题),您不想删除包含空白或空列的行,因为您的行仅包含一列,但行包含连续逗号(,,)。所以你应该使用:

df.drop(df.iloc[0].str.contains(',,').index)

【讨论】:

    【解决方案2】:

    我认为您的代码只需稍作改动即可工作:

    result.replace('', np.nan, inplace=True)
    result.dropna(inplace=True)
    

    【讨论】:

    • 不幸的是,这不起作用,打印结果后,我仍然在我的数据框行中看到 ,。我还应该告诉你我的数据框是 100X1,所以当我从 CSV 导入它时,整行就像一列。
    【解决方案3】:

    如果您的 CSV 文件中有几行,您可以避免额外的转换为 NaN 的步骤:

    result = pandas.read_csv(file)
    result = result[result.notnull().all(axis = 1)]
    

    这将删除任何有空元素的行。

    但是,您添加的评论说明 CSV 文件中只有一行,并且 CSV 阅读器似乎表现出一些特殊行为。由于您需要选择没有 NaN 的列,我建议这些行:

    result = pandas.read_csv(file, header = None)
    selected_columns = result.columns[result.notnull().any()]
    result = result[selected_columns]
    

    注意选项header = None 和read_csv。

    【讨论】:

    • 这也不起作用,我仍然在数据框中看到 ,。我还应该告诉你我的数据框是 100X1,所以当我从 CSV 导入它时,整行就像一列。
    猜你喜欢
    • 1970-01-01
    • 2019-11-25
    • 1970-01-01
    • 2018-06-29
    • 2021-06-26
    • 2017-03-22
    • 2016-09-09
    • 2017-06-30
    • 1970-01-01
    相关资源
    最近更新 更多