繁体   English   中英

使用 pandas read_csv 导入数据:header 出现两行错误

[英]Import data with pandas read_csv: header with two rows error

我正在尝试使用 pandas 从文本文件中导入数据。 数据如下所示:

  Step            Time    Pressure z=0  MoleFrac 1 z=0  MoleFrac 2 z=0   Mole flow z=0
 [Int]       [seconds]         [bar.a]             [-]             [-]       [gmole/s]
     1       0.0000000  7.75425808E-01  1.30000000E-01  8.70000000E-01  6.00000000E-02
     2       0.0556727  7.67785502E-01  1.30000000E-01  8.70000000E-01  6.00000000E-02
     3       0.5673533  7.18327020E-01  1.30000000E-01  8.70000000E-01  6.00000000E-02

我试着这样做:

import pandas as pd
data = pd.read_csv('filename.txt', delimiter="\s+", header=[0,1])

如果我只为 header 使用一行,它就可以工作,但是一旦我添加了第二行,我就会收到一条错误消息:

IndexError: list index out of range

有任何想法吗?

尝试:

df = pd.read_csv(r"filename.txt",  delimiter="\s{2,}", header=[0,1], engine='python')

engine设置为python时,可以使用正则表达式作为分隔符。

结果:

   Step      Time Pressure z=0 MoleFrac 1 z=0 MoleFrac 2 z=0 Mole flow z=0
  [Int] [seconds]      [bar.a]            [-]            [-]     [gmole/s]
0     1  0.000000     0.775426           0.13           0.87          0.06
1     2  0.055673     0.767786           0.13           0.87          0.06
2     3  0.567353     0.718327           0.13           0.87          0.06

因为列名中有单个空格,所以我发现分隔符应该至少有 2 个空格" "表示为\s{2,}

检查df.columns

MultiIndex([(          'Step',     '[Int]'),
            (          'Time', '[seconds]'),
            (  'Pressure z=0',   '[bar.a]'),
            ('MoleFrac 1 z=0',       '[-]'),
            ('MoleFrac 2 z=0',       '[-]'),
            ( 'Mole flow z=0', '[gmole/s]')],
           )

所以生成的 dataframe 看起来是正确的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM