【问题标题】:Load .csv with unknown delimiter into Pandas DataFrame将带有未知分隔符的 .csv 加载到 Pandas DataFrame 中
【发布时间】:2016-03-25 09:32:38
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: python csv pandas delimiter


    【解决方案1】:

    实际上在 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 文件中(例如,制表符分隔符)。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 好吧,试一试,我从未听说过正则表达式
      猜你喜欢
      • 2013-10-06
      • 2019-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-21
      • 2015-03-06
      相关资源
      最近更新 更多