繁体   English   中英

熊猫 read_csv。 如何在换行符之前忽略分隔符

[英]pandas read_csv. How to ignore delimiter before line break

我正在读取一个带有数值的文件。

data = pd.read_csv('data.dat', sep=' ', header=None)

在文本文件中,每一行都以空格结尾,因此 pandas 等待一个不存在的值,并在每一行的末尾添加一个“nan”。 例如:

2.343 4.234

读作:[2.343, 4.234, nan]

我可以使用, usecols = [0 1]来避免它,但我更喜欢更通用的解决方案

您可以在sep参数中使用正则表达式。

您可以要求它使用任意数量的空格作为分隔符,而不是将分隔符指定为一个空格,直到找到下一个值。 您可以使用正则表达式\s+来做到这一点:

data = pd.read_csv('data.dat', sep='\s+', header=None)

使用usecols指定要读取的列将是一种更简洁的方法,或者您可以在读取数据后删除该列,但这会带来读取您不需要的数据的开销。 通用方法将要求您创建一个正则表达式解析器,这将更加耗时且更加混乱。

您可以将 csv 文件中的分隔符更改为空格以外的其他内容吗? 因为这可能是每行以 nan 结尾的原因。 如果您使用:

    data = pd.read_csv('data.dat', sep=',', header=None)

例如,无需清理数据即可解决此问题。

您可以简单地使用:

data = pd.read_csv('data.dat', sep=' ', header=None,
                   index_col=False  # < fixes file with delimiters at the end of each line
)

来自熊猫文档

注意: index_col=False可用于强制 pandas 不使用第一列作为索引,例如当您有一个格式错误的文件时,每行末尾都有分隔符。

无论您拥有什么类型的分隔符(例如,空格、制表符、逗号等),这都应该有效

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM