2012-09-20 37 views
1

我有一個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

你可以發佈追蹤? – darkfeline

回答

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) 

可以使用transformationaggregation做一些標準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 

有在the docs是更多的例子。

相關問題