首页 > 解决方案 > 将仅包含行的连续文本文件解析为熊猫数据框

问题描述

我有一个包含重复行的文本文件,我想转换为数据框。

10/21/2019
abcdef
100.00
10/22/2019
ghijk
120.00

有一个明显的模式,我希望数据框看起来像这样:

Data       | Description | Amount
10/21/2019 | abcdef      | 100.00
10/22/2019 | ghijk       | 120.00

这是怎么做到的?

谢谢。

标签: pythonpandas

解决方案


一点正则表达式来提取细节,然后向前填充前两列并删除空值

pattern = r"(?P<Date>\d{2}/\d{2}/\d{4})|(?P<Description>[a-z]+)|(?P<Amount>\d{1,}\.00)"

res = (df1.text.str.extract(pattern)
       .assign(Date = lambda x: x.Date.ffill(),
               Description = lambda x: x.Description.ffill()
              )
       .dropna(how='any')
      )

res


     Date   Description Amount
2   10/21/2019  abcdef  100.00
5   10/22/2019  ghijk   120.00

如果你不关心正则表达式,并且格式是不变的,那么我们可以用 numpy 重塑数据并创建一个新的数据框。

#reshape the data
#thanks to @Chester 
#removes unnecessary computation
res = np.reshape(df1.to_numpy(),(-1,3))


#create new dataframe
pd.DataFrame(res,columns=['Date','Description','Amount'])

       Date Description Amount
0   10/21/2019  abcdef  100.00
1   10/22/2019  ghijk   120.00

推荐阅读