将带有未知分隔符的 .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 文件中(例如制表符分隔符)。
我有很多 .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 文件中(例如制表符分隔符)。