我在csv列中列出了日期和时间。我正在尝试在每个唯一的日期执行一个函数 - 每次与该日期相关联。该函数应该在每个新日期的第一次(930am)开始。每个日期重复42次。有62,035行。我说:
我的问题:下面的'for'循环这样的循环会在逻辑上实现吗? I.E.,在该日期的所有时间的每个新日期“做某事”仅。然后转到下一个日期......
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:'列表索引超出范围'。
有任何想法可能会发生这种情况吗?
答案 0 :(得分: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操作,或使用transformation或aggregation编写自己的操作:
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
the docs中有更多示例。