在pandas的read_csv函数中自定义分隔符

30

我正在将许多不同的数据文件读入各种pandas数据框中。这些数据文件中的列是用空格分隔的。然而,对于每个文件,空格数是不同的(对于其中一些文件,只有一个空格,而对于其他文件,则有两个空格等)。因此,每次导入文件时,我都必须手动打开该文件并查看使用了多少个空格,并在sep中给出相应数量的空格:

import pandas as pd
df = pd.read_csv('myfile.dat', sep = '    ')

我可以告诉 Pandas 假定"任意数量的空格"作为分隔符吗?同时,我可以指示 Pandas 使用制表符 (\t) 或空格作为分隔符吗?

4个回答

33

是的,您可以使用一个简单的正则表达式 sep='\s+' 来表示一个或多个空格。


成功了!谢谢。我能否告诉pandas使用空格或制表符作为分隔符? - Peaceful
3
空格可能匹配制表符,但我相信你只需要在正则表达式中添加一个或条件即可:sep=\s+|\t+ - Ted Petrou

4
您还可以使用参数skipinitialspace=True,它可以跳过任何分隔符后的前导空格。

4
您可以直接使用delim_whitespace
import pandas as pd
df = pd.read_csv('myfile.dat', delim_whitespace=True )

参数delim_whitespace用于控制是否使用空白符(如' '' ')作为分隔符。详情请参阅pandas.read_csv

2

我发现一件事情,如果你使用不支持的分隔符,Pandas/Dask将不得不使用Python引擎而不是C引擎。这会导致速度变慢。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接