在 pandas read_csv 中自定义分隔符

Customizing the separator in pandas read_csv

我正在将许多不同的数据文件读取到各种 pandas 数据帧中。这些数据文件中的列由 space 分隔。但是,对于每个文件,space的数量是不同的(其中一些文件只有一个space,另一些文件有两个space,依此类推)。因此,每次我导入文件时,我都必须手动转到该文件并查看已使用的 space 的数量,并在 sep 中给出那些 space 的数量:

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

有什么方法可以让 pandas 假定 "any number of spaces" 为分隔符?另外,有什么方法可以让 pandas 使用制表符 (\t) 或 spaces 作为分隔符?

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

您还可以使用参数 skipinitialspace=True 跳过任何定界符后的前导空格。

可以直接使用delim_whitespace:

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

参数 delim_whitespace 控制是否使用空格(例如 ' '' ')作为分隔符。有关详细信息,请参阅 pandas.read_csv

我发现的一件事是您是否使用了不受支持的分隔符。 Pandas/Dask 将不得不使用 Python 引擎而不是 C 引擎。这要慢得多。