将文本行转换为熊猫结构

时间:2019-01-01 21:52:32

标签: python pandas

我在列表中有成千上万行,例如下面的列表,我想将其转换成由不同列组成的pandas表。

  

2018-12-03 21:15:24销售量:120 ID:534343北美

     

2018-12-03 21:15:27销售量:65 ID:534344欧洲

理想情况下,我想用以下几列创建一个熊猫结构:日期,销售,ID,地区,然后用适合这些值的值填充它。

例如因此,在第一行中,我的销售额为120,ID = 534343,地区=北美,日期= 2018-12-03 21:15:24。

鉴于我有成千上万的行,什么代码可以完成这项工作?

1 个答案:

答案 0 :(得分:0)

假设列表位于文件中,请先将其读入字符串(或已读入列表,在这种情况下,以下代码将有所不同),然后应用代码。

要读入字符串:

with open('/file/path/myfile.txt','r') as f:
    s = f.read()

解析代码:

import re
import pandas as pd

s = """2018-12-03 21:15:24 Sales:120 ID:534343 North America
2018-12-03 21:15:27 Sales:65 ID:534344 Europe"""

sales_re = "Sales:([0-9]+)"
id_re = "ID:([0-9]+)"

lst = []
for line in s.split('\n'):
    date = line[0:19]
    sale = re.search(sales_re, line).groups()[0]
    id = re.search(id_re, line).groups()[0]
    region = line[line.rfind(":")+1+len(id)+1:] # Search from last ":", add one to go over ":" and 1 to skip space
    x = [date, sale, id, region]
    lst.append(x)


df = pd.DataFrame(lst)

df.columns = ['date', 'sale', 'id', 'region']

在上面的示例中,我假设所有内容都已加载到字符串中。然后,我使用正则表达式提取每一行的较难部分,并将所有内容附加到列表中。然后,我使用pandas.DataFrame构造函数将其转换为数据框。