0
In [1]: from datetime import datetime

In [2]: import os

In [3]: import pandas as pd

In [4]: file_path = os.path.normpath('F:/EUR/data.csv')

In [5]: parse = lambda x: datetime.strptime(x, '%d.%m.%Y %H:%M:%S')

In [6]: df = pd.read_csv(file_path, parse_dates=[[0, 1]], date_parser=parse, ind
ex_col=[0], header=None)

In [7]: keys = ['Open', 'High', 'Low', 'Close']

In [8]: df.columns = [x for x in keys]

In [9]: grouped = df.groupby([df.index.year, df.index.day])
In [10]: df[:5]
Out[10]:
                           Open    High     Low   Close
0_1
2007-01-02 23:30:00  1.3198  1.3205  1.3197  1.3203
2007-01-02 00:00:00  1.3203  1.3206  1.3200  1.3205
2007-01-02 00:30:00  1.3205  1.3213  1.3205  1.3212
2007-01-02 01:00:00  1.3212  1.3217  1.3211  1.3214
2007-01-02 01:30:00  1.3214  1.3226  1.3213  1.3225

1.グループ化されたオブジェクトで簡単な計算を行い、結果を次のような新しい列に入れる必要があります: 2.そして、なぜ私は次のようにグループ化できないのですか:if df['Close']>df['Open']:
df['sum']=df['Close']-df['Open']

grouped = df.groupby([df.index.year, df.index.day,df['Close'>df['Open'])

力学を完全に理解していない

3.結果を次のような新しい列に入れるにはどうすればよいですか:
for (k1, k2), group in grouped:
df['new_col']=group[group['Close']>group['Open']]['Close']-group[group['Close']>group['Open']]['Open']

または多分より良い方法です。

4

1 に答える 1

1

これを試しましたか?:

grouped = df.groupby([df.index.year,df.index.day])
df['sum'] = grouped.apply(lambda x: x.Open + x.Close)
于 2013-03-19T01:33:52.320 に答える