1

csv の列に日付と時刻のリストがあります。私はすべての一意の日付で関数を実行しようとしています-その日付に関連付けられた時間ごとに。関数は、すべての新しい日付の最初の時刻 (午前 9 時 30 分) に開始する必要があります。それぞれの日付が 42 回繰り返されます。62,035 行あります。私は言う:

私の質問: 以下の「for」ループのようなループは論理的にその目的を達成できますか? IE、その日付のみのすべての時間について、新しい日付ごとに「何かをする」。そして次のデートへ…。

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

docsには、さらに多くの例があります。

于 2012-12-12T01:16:38.110 に答える