1

我有一个 csv 列中的日期和时间列表。我正在尝试在每个唯一日期执行一个功能 - 对于与该日期相关的每个时间。该功能应在每个新日期的第一次(上午 930 点)开始。每个日期重复 42 次。有 62,035 行。我说:

我的问题:像下面的“for”循环这样的循环会在逻辑上实现这一目标吗?即,仅在该日期的所有时间在每个新日期“做某事” 。然后移动到下一个日期...

data=read_csv(file)  
idf= data.set_index(['date', 'time'])  
for ((date, time), data) in idf:
# (I also tried - for (i in idf):)

 --do something here--

现在,我得到了 IndexError: 'list index out of range'。
任何想法为什么会发生这种情况?

4

1 回答 1

0
In [1]: df = pd.DataFrame({'duty': {('11/12/2012', '10:00'): 0, ('12/12/2012', '10:00'): 0, ('12/12/2012', '11:00'): 1}, 'prices': {('11/12/2012', '10:00'): 1, ('12/12/2012', '10:00'): 2, ('12/12/2012', '11:00'): 3}})

In [2]: df.index = pd.MultiIndex.from_tuples(df1.index)

In [3]: df
Out[3]: 
                  duty  prices
11/12/2012 10:00     0       1
12/12/2012 10:00     0       2
           11:00     1       3

In [4]: g = df.groupby(level=0)

您可以执行一些标准的 groupby 操作,或者使用转换聚合编写自己的操作:

In [5]: g.sum()
Out[5]: 
            duty  prices
11/12/2012     0       1
12/12/2012     1       5

In [6]: g.transform(lambda x: x - x.mean())
Out[6]: 
                  duty  prices
11/12/2012 10:00   0.0     0.0
12/12/2012 10:00  -0.5    -0.5
           11:00   0.5     0.5

In [7]: g.agg({'prices': np.mean, 'duty': len})
Out[7]: 
            duty  prices
11/12/2012     1     1.0
12/12/2012     2     2.5

文档中有更多示例。

于 2012-12-12T01:16:38.110 回答