我将一个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 x1。当我从CSV文件导入数据框时,所有列均变为1。(我不知道这是否有帮助)
谁能告诉我如何删除包含元素的行?
答案 0 :(得分:1)
我的数据框也为100 x1。当我从CSV文件导入数据框时,所有列都变为1
这可能是关键,恕我直言很奇怪。当您在pandas DataFrame中导入csv时,通常希望每个字段都进入其自己的列中,以便以后能够单独处理该列值。因此(仍然是恕我直言)是解决此问题的正确解决方案。
现在直接回答您的问题(可能是XY),您不想删除包含空白或空白列的行,因为您的行仅包含一个列,但包含连续的逗号({{1} }。所以你应该使用:
,,
答案 1 :(得分:0)
我认为您的代码应该稍作改动:
result.replace('', np.nan, inplace=True)
result.dropna(inplace=True)
答案 2 :(得分:0)
如果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
。