[英]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.