将文本导入到具有多个分隔符的pandas

Cas*_*leH 16 python import delimited-text pandas

我有一些看起来像这样的数据:

c stuff
c more header
c begin data         
 1 1:.5
 1 2:6.5
 1 3:5.3
Run Code Online (Sandbox Code Playgroud)

我想将它导入3列数据框,例如列

a , b, c
1,  1, 0.5
etc
Run Code Online (Sandbox Code Playgroud)

我一直试图读取数据,因为2列分为':',然后将第一列拆分为''.但是我发现它令人厌烦.是否有更好的方法直接对其进行排序?

目前:

data1 = pd.read_csv(file_loc, skiprows = 3, delimiter = ':', names = ['AB', 'C'])
data2 = pd.DataFrame(data1.AB.str.split(' ',1).tolist(), names = ['A','B'])
Run Code Online (Sandbox Code Playgroud)

然而,由于我的数据具有领先的空间,这使事情变得更加复杂......

我觉得这应该是一个简单的任务,但是目前我正在考虑逐行阅读并使用一些find replace来在导入之前清理数据.

DSM*_*DSM 27

一种方法可能是使用python引擎允许的正则表达式分隔符.例如:

>>> !cat castle.dat
c stuff
c more header
c begin data         
 1 1:.5
 1 2:6.5
 1 3:5.3
>>> df = pd.read_csv('castle.dat', skiprows=3, names=['a', 'b', 'c'], 
                     sep=' |:', engine='python')
>>> df
   a  b    c
0  1  1  0.5
1  1  2  6.5
2  1  3  5.3
Run Code Online (Sandbox Code Playgroud)

  • 当我使用此方法时,为什么会收到“ParserError”?`pandas.errors.ParserError:第 11 行中预期有 29 个字段,但看到了 45 个。错误可能是由于使用多字符分隔符时忽略引号造成的。` (2认同)
  • 或者对于单字符分隔符,字符类 `sep='[ :]'`。 (2认同)