我正在尝试将格式奇怪的文本文件导入到 pandas DataFrame 中。下面是两个示例行:
LOADED LANE 1 MAT. TYPE= 2 LEFFECT= 1 SPAN= 200. SPACE= 10. BETA= 3.474 LOADEFFECT 5075. LMAX= 3643. COV= .13
LOADED LANE 1 MAT. TYPE= 3 LEFFECT= 1 SPAN= 200. SPACE= 10. BETA= 3.515 LOADEFFECT10009. LMAX= 9732. COV= .08
首先我尝试了以下方法:
df = pd.read_csv('beta.txt', header=None, delim_whitespace=True, usecols=[2,5,7,9,11,13,15,17,19])
这似乎工作正常,但是当它到达上面的示例行时就变得混乱了,其中后面没有空格LOADEFFECT
字符串(您可能需要向右滚动一点才能在示例中看到它)。我得到的结果如下:
632 1 2 1 200 10 3.474 5075. 3643. 0.13
633 1 3 1 200 10 3.515 LMAX= COV= NaN
然后我决定使用正则表达式来定义分隔符。经过多次试验和错误运行(我不是正则表达式专家),我设法接近以下行:
df = pd.read_csv('beta.txt', header=None, sep='/s +|LOADED LANE|MAT. TYPE=|LEFFECT=|SPAN=|SPACE=|BETA=|LOADEFFECT|LMAX=|COV=', engine='python')
这几乎可以工作,但是会创建一个NaN
由于某种原因,一开始就列了:
632 NaN 1 2 1 200 10 3.474 5075 3643 0.13
633 NaN 1 3 1 200 10 3.515 10009 9732 0.08
此时我想我可以删除第一列,然后就可以了。但是我想知道设置正则表达式以一次性正确解析此文本文件的正确方法是什么。有任何想法吗?除此之外,我确信有一种更智能的方法来解析这个文本文件。我很高兴听到您的建议。
Thanks!