Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫们读着书。如何在换行前忽略分隔符_Python_Pandas_File - Fatal编程技术网

Python 熊猫们读着书。如何在换行前忽略分隔符

Python 熊猫们读着书。如何在换行前忽略分隔符,python,pandas,file,Python,Pandas,File,我正在读一个有数值的文件 data=pd.read\u csv('data.dat',sep='',header=None) 在文本文件中,每一行都以空格结尾,因此,请等待不存在的值,并在每一行的末尾添加一个“nan”。 例如: 2.343 4.234 全文如下: [2.343,4.234,nan] 我可以使用,usecols=[0 1]来避免它,但我更喜欢一种更通用的解决方案使用usecols指定要读取的列将是一种更干净的方法,或者您可以在读取数据后删除该列,但这会增加读取不需要的数据的开销。

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

data=pd.read\u csv('data.dat',sep='',header=None)

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

2.343 4.234

全文如下: [2.343,4.234,nan]


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

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

能否将csv文件中的分隔符更改为空间以外的内容?因为这可能就是为什么每一行都以nan结尾的原因。 如果您使用:

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

例如,不必清理数据就可以解决此问题

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

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

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

你为什么不清理你的房间?如果你的格式是不规则的,你只能期待这么多。我同意@juanpa.arrivillaga,清理CSV比让你的程序处理所有这些不同的事情要好得多。出于好奇,你的数据是什么样的,你用它做什么?它们是神经网络模拟输出。一行是时间,另一行是神经元指数。既然你提到了,我可以在C++中改变我的代码,以避免额外的空间。我不知道这是如何解决这个问题的。最后一个尾随空格将被识别为分隔符,对吗?它解决了这个问题。我不知道为什么,因为正如JojjnSIT指出的那样,额外的空间应该被视为分离器。但是我检查过了,那个“nan”已经不在了。@jorijnsmit不,它不会被识别为分隔符。发生的情况是,有一个空格,然后是一个新行字符,甚至可能有多个空格。第一个空格被理解为分隔符,然后下一个字符创建NaN。如果所有的空白字符都被识别为分隔符,那么解释器会理解该行已经结束,并开始读取下一行。啊啊,换行符也会被识别为空白字符!很不错的。