【问题标题】:Customizing the separator in pandas read_csv自定义 pandas read_csv 中的分隔符
【发布时间】:2017-05-05 05:51:14
【问题描述】:

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

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

有什么方法可以告诉熊猫假设“任意数量的空格”作为分隔符?另外,有什么方法可以告诉 pandas 使用制表符 (\t) 或空格作为分隔符?

【问题讨论】:

    标签: python pandas separator


    【解决方案1】:

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

    【讨论】:

    • 成功了!谢谢。有什么办法可以告诉熊猫使用空格或制表符作为分隔符?
    • 空格也可能与制表符匹配,但我相信您可以在正则表达式中添加一个或条件:sep=\s+|\t+
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      你可以直接使用delim_whitespace:

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

      参数delim_whitespace 控制是否将空格(例如' ' 或' ')用作分隔符。详情请见pandas.read_csv。

      【讨论】:

        【解决方案4】:

        我发现的一件事是,如果您使用了不受支持的分隔符。 Pandas/Dask 将不得不使用 Python 引擎而不是 C 引擎。这是一个很好的交易慢。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-10-25
          • 2018-01-25
          • 2015-09-20
          • 2018-07-12
          • 2017-07-06
          • 2017-06-25
          相关资源
          最近更新 更多