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

时间:2015-12-18 16:07:16

标签: python csv pandas delimiter

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

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

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

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

2 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:4)

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

  

sep :str,默认','

     

要使用的分隔符。如果sep为None,则C引擎无法自动检测分隔符,但Python解析引擎可以,这意味着后者将自动使用。此外,长度超过1个字符且与'\ s +'不同的分隔符将被解释为正则表达式,并且还将强制使用Python解析引擎。请注意,正则表达式分隔符很容易忽略引用的数据。正则表达式示例:'\ r \ t'

这意味着您只需使用

即可阅读文件
dataRaw = pd.read_csv(name, sep = None, engine = 'python')

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