Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将CSV从两行转换为带有时间戳的列_Python_Mysql_Csv - Fatal编程技术网

Python 将CSV从两行转换为带有时间戳的列

Python 将CSV从两行转换为带有时间戳的列,python,mysql,csv,Python,Mysql,Csv,我有一个CSV文件,格式为两行,其中包含24小时的数据: (逗号分隔。我在原来的问题中没有指定,对不起!) 我需要把它转换成我可以在另一个过程中使用的格式。它包含完整的时间戳、值和Building ref。我将把它推送到一个MySQL表中 Building, Kwh, Timestamp A, 2, 12/06/15 00:30 A, 3, 12/06/15 01:00 A, 4, 12/06/15 01:30 A, 4, 12/06/15 02:00 A, 2,

我有一个CSV文件,格式为两行,其中包含24小时的数据: (逗号分隔。我在原来的问题中没有指定,对不起!)

我需要把它转换成我可以在另一个过程中使用的格式。它包含完整的时间戳、值和Building ref。我将把它推送到一个MySQL表中

Building,   Kwh,    Timestamp
A,  2,  12/06/15 00:30
A,  3,  12/06/15 01:00
A,  4,  12/06/15 01:30
A,  4,  12/06/15 02:00
A,  2,  12/06/15 02:30
A,  3,  12/06/15 03:00
我已尝试使用此方法来透视数据:

import csv

from itertools import izip
a = izip(*csv.reader(open("Logger.csv", "rb")))
csv.writer(open("Long.csv", "wb")).writerows(a)
但这给了我四行的标题和两行的数据。 只有从今天的Python开始,我才能修改导入csv,使转换更清晰

我尝试运行第二个python文件来追加每一行以添加时间戳,并删除其中包含“a”的行。我知道这不是一个正确的方法,我正在寻求指导

这是我目前的成绩

Site ID Building
Meter Reference A
Date    11/06/15
Units   kWh
00:30   2
A   A
01:00   2
A   A
01:30   2
A   A
02:00   2
A   A
02:30   2
A   A
03:00   3
非常感谢您的帮助

此功能:

## Reading input
input_file = open("input_file_name.csv",'r')

input_data = []
for line in input_file:
  input_data.append(line.split(";"))

date = input_data[1][4]
input_file.close()

## Writting output
output_file = open("output_file_name.csv",'w')

output_file.write("Building;Kwh;Timestamp\n")

swift = 6
size_data = len(input_data[0]) - swift
for i in range(size_data/2):
  hour = input_data[0][swift + 2*i]
  reference = input_data[0][swift + 2*i + 1]
  kwh = input_data[1][swift + 2*i]
  output_file.write(reference+";"+kwh+";"+date+" "+hour+"\n")

output_file.close()
这项工作:

## Reading input
input_file = open("input_file_name.csv",'r')

input_data = []
for line in input_file:
  input_data.append(line.split(";"))

date = input_data[1][4]
input_file.close()

## Writting output
output_file = open("output_file_name.csv",'w')

output_file.write("Building;Kwh;Timestamp\n")

swift = 6
size_data = len(input_data[0]) - swift
for i in range(size_data/2):
  hour = input_data[0][swift + 2*i]
  reference = input_data[0][swift + 2*i + 1]
  kwh = input_data[1][swift + 2*i]
  output_file.write(reference+";"+kwh+";"+date+" "+hour+"\n")

output_file.close()

我玩得很开心

import re

input_file = 'in.txt'
output_file = 'output.txt'

data = {}

with open(input_file) as fh:
    for line in fh:
        line = line.rstrip()

        if 'Date' in line:
            times = []
            for i in re.split(r'\s+', line):
                if re.match(r'\d{2}:\d{2}', i):
                    times.append(i)

        else:
            building = (re.split(r'\s+', line))[1]
            data[building] = {}
            data[building]['times'] = times
            data[building]['results'] = []
            data[building]['count'] = 0

            for i in re.split(r'\s+', line):
                if re.match(r'^\d+$', i):
                    data[building]['results'].append(i)
                    data[building]['count'] += 1
            data[building]['date'] = \
                re.search(r'(\d{2}/\d{2}/\d{2})', line).group()

wfh = open(output_file, 'w')
wfh.write("Building Kwh Timestamp\n")

for k in data.keys():

    building = k

    for i in range(0, data[building]['count']):
        wfh.write("{}   {}  {}\n".format(
            k,
            data[building]['results'].pop(0),
            data[building]['times'].pop(0))
        )

wfh.close()

我玩得很开心

import re

input_file = 'in.txt'
output_file = 'output.txt'

data = {}

with open(input_file) as fh:
    for line in fh:
        line = line.rstrip()

        if 'Date' in line:
            times = []
            for i in re.split(r'\s+', line):
                if re.match(r'\d{2}:\d{2}', i):
                    times.append(i)

        else:
            building = (re.split(r'\s+', line))[1]
            data[building] = {}
            data[building]['times'] = times
            data[building]['results'] = []
            data[building]['count'] = 0

            for i in re.split(r'\s+', line):
                if re.match(r'^\d+$', i):
                    data[building]['results'].append(i)
                    data[building]['count'] += 1
            data[building]['date'] = \
                re.search(r'(\d{2}/\d{2}/\d{2})', line).group()

wfh = open(output_file, 'w')
wfh.write("Building Kwh Timestamp\n")

for k in data.keys():

    building = k

    for i in range(0, data[building]['count']):
        wfh.write("{}   {}  {}\n".format(
            k,
            data[building]['results'].pop(0),
            data[building]['times'].pop(0))
        )

wfh.close()