Объединить столбец csv в строку и напечатать определенное значение

#python

#python

Вопрос:

У меня есть файл csv, содержащий три столбца: дату, время и температуру.

Теперь у меня есть следующий код, и мне нужно объединить дату, время и температуру во временной строке и добавить временную строку в массив, который содержит значения, где температура> 80, и распечатать результат.

 import csv
data_array = []
output = []

with open("temp.csv") as csvfile:
    csv_reader = csv.reader(csvfile, delimiter=",")
    next(csv_reader, None)
    for row in csv_reader:
        data_array.append({"date": row[0], "time": row[1], "temp": float(row[2])})
#create an array of dictionary to put related data together; convert the temperature to float.
for item in data_array:
    if item['temp'] > 80:

        output.append(item)

print(output)
  

Я могу распечатать только словарь этих элементов, но как я могу объединить элементы и распечатать результат? Разве я не должен использовать dictionary?

Комментарии:

1. Я не понимаю, как будет выглядеть ваш ожидаемый результат. Не могли бы вы опубликовать пример?

2. Конечно. например{ [‘1/2/2018 10:00 утра’, 65.5], [1/2/2018 11:00 AM’, 67.3], … }

Ответ №1:

Вам не нужен временный список dicts. Просто создайте список из объединенных даты и времени и температуры и добавьте список в список выходных данных, когда температура превысит 80, непосредственно в цикле, который выполняется с помощью программы чтения CSV:

 with open("temp.csv") as csvfile:
    csv_reader = csv.reader(csvfile, delimiter=",")
    next(csv_reader, None)
    for date, time, temperature in csv_reader:
        temperature = float(temperature)
        if temperature > 80:
            output.append([' '.join((date, time)), temperature])
  

Комментарии:

1. Большое вам спасибо. Мой второй день в python, поэтому пока не делаю много простых вещей.

Ответ №2:

Просто измените

 output.append(item)
  

Для

 output.append(['{} {}'.format(item['date'], item['time']), item['temp']])