特定日期的Python循环

时间:2018-06-25 14:29:23

标签: python for-loop timestamp

我的问题是关于一个简单的For循环。我有一个CSV文件,每小时显示超过4年。问题是我需要每月平均产出。因此,我使用每月所有产出的总和除以产出数量。我的输入文件具有以下格式:

                      power_output
timestamp                        
2012-01-01 00:00:00   2335.215265
2012-01-01 01:00:00   3097.521354
2012-01-01 02:00:00   3412.639293
2012-01-01 03:00:00   3366.400549
2012-01-01 04:00:00   3431.050170

时间戳的格式是yyyy-mm-dd,而不是小时。

现在的问题是,我无法在一个月的时间戳上使用for-循环进行迭代。有人可以帮我吗?

2 个答案:

答案 0 :(得分:1)

您可以将数据作为时间序列加载到熊猫中:

import pandas as pd
df = pd.read_csv(filename, parse_dates=True)

现在,您只需resample您的数据即可,例如

df.resample('1M').mean()

答案 1 :(得分:0)

您可以做的是建立一个2D数组,每个月有一个列表。

import csv

with open('file.csv', 'rb') as csvfile:
    reader = csv.reader(csvfile, delimiter='   ')
    year_outages = [ [], [], [], [], [], [], [], [], [], [], [], [] ]
    for row in reader:
        month = row[0][5:7]
        year_outages[int(month)].append(float(row[1]))

例如,要计算二月份的平均值,您可以执行以下操作:

feb_avg = sum(year_outages[1])/len(year_outages[1])