如何将“发票”级别数据解析为列式数据以进行分析?

时间:2017-05-30 19:23:39

标签: python r parsing

数据看起来像这样

发票1

ID
Lat
Long
Year 
Month
Observations
1
.
.
.
n

#-----

发票2-n (模式重复)

我的目标是以表格

结束
ID | Lat | Long | Year | Month | Obs 1 | Obs 2 | Obs 3 | Obs n

#-----充当发票之间的分隔符

此时很容易从宽到长,但是编写映射规则并迭代数据的最佳方法是什么?我的所有数据都在一个.csv中,但它超过100万行。

我正在寻找一个可以开始的地方,以及以这种格式处理数据的一般流程。

2 个答案:

答案 0 :(得分:0)

with open('path/to/input') as infile, open('path/to/output', 'w') as fout:
    outfile = csv.writer(fout)
    invoice = []
    for line in infile:
        if line.startswith("Invoice"):
            outfile.writerow(invoice)
            invoice = []
            continue
        line = line.strip()
        if not line: continue
        invoice.append(line)
    outfile.writerow(invoice)

答案 1 :(得分:0)

一个简单的循环应该有效:

with open('...') as infile:
  data = []
  line = []
  item = infile.readline().strip()
  while item != '':
    if item.startswith('#-----'):
      data.append(line)
      line = []
    else:
      line.append(item)
    item = infile.readline().strip()

最后,data是一个列表列表(不一定是矩形)。

相关问题