我正在尝试使用熊猫从文本文件导入数据。数据如下所示:
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])
如果我仅对标题使用一行,但是一旦添加第二行,就会收到错误消息:
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]')],
)
因此结果数据框看起来正确。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句