将带有未知分隔符的 .csv 加载到 Pandas DataFrame

Load .csv with unknown delimiter into Pandas DataFrame

我有很多 .csv 文件要加载到 pandas 数据帧中,至少有两个分隔符逗号和分号,我不确定其余的分隔符。我知道可以使用

设置分隔符
dataRaw = pd.read_csv(name,sep=",")

dataRaw = pd.read_csv(name,sep=";")

不幸的是,如果我不指定分隔符,则默认为逗号,这会导致其他分隔符的单列数据框。因此,是否有一种动态的方式来分配分隔符,以便任何 csv 都可以传递给 pandas?例如尝试逗号或分号。 pandas 文档并未提及在 csv 读取中使用逻辑

如果您有不同的分隔符,您可以使用:

dataRaw = pd.read_csv(name,sep=";|,")

是一个 Regular expression 可以处理由 OR (|) 运算符分隔的多个分隔符。

实际上 pandas documentation 中有一个答案(至少,对于 pandas 0.20.1)

sep : str, default ‘,’

Delimiter to use. If sep is None, the C engine cannot automatically detect the separator, but the Python parsing engine can, meaning the latter will be used automatically. In addition, separators longer than 1 character and different from '\s+' will be interpreted as regular expressions and will also force the use of the Python parsing engine. Note that regex delimiters are prone to ignoring quoted data. Regex example: '\r\t'

这意味着您只需使用

就可以阅读您的文件
dataRaw = pd.read_csv(name, sep = None, engine = 'python')

如果有除“;”之外的其他分隔符,这也应该有效要么 '。'在您的 .csv 文件中(例如制表符分隔符)。