如何在pandas中创建分隔符read_csv更灵活wrt whitespace?

Rom*_*man 54 python csv whitespace dataframe pandas

我需要使用存储在文件中的数据创建数据框.为此,我想使用read_csv方法.但是,分隔符不是很规则.有些列由tabs(\t)分隔,其他列由空格分隔.此外,一些列可以通过2或3个或更多个空格分隔,或者甚至通过空格和标签的组合(例如3个空格,两个标签然后1个空格).

有没有办法告诉大熊猫正确对待这些文件?

顺便说一下,如果我使用Python,我就没有这个问题.我用:

for line in file(file_name):
   fld = line.split()
Run Code Online (Sandbox Code Playgroud)

它完美无缺.它不关心字段之间是否有2或3个空格.即使空格和制表符的组合也不会造成任何问题.大熊猫可以这样做吗?

DSM*_*DSM 95

文档中,您可以使用正则表达式或delim_whitespace:

>>> import pandas as pd
>>> for line in open("whitespace.csv"):
...     print repr(line)
...     
'a\t  b\tc 1 2\n'
'd\t  e\tf 3 4\n'
>>> pd.read_csv("whitespace.csv", header=None, delimiter=r"\s+")
   0  1  2  3  4
0  a  b  c  1  2
1  d  e  f  3  4
>>> pd.read_csv("whitespace.csv", header=None, delim_whitespace=True)
   0  1  2  3  4
0  a  b  c  1  2
1  d  e  f  3  4
Run Code Online (Sandbox Code Playgroud)

  • 您也可以使用`skipinitialspace`来跳过初始空间 (3认同)

Pea*_*ful 9

>>> pd.read_csv("whitespace.csv", header = None, sep = "\s+|\t+|\s+\t+|\t+\s+")
Run Code Online (Sandbox Code Playgroud)

将使用任意数量的空格和制表符的任意组合作为分隔符.