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.I нужно сделать простую математику на сгруппированных объекта и поместить результат в новый столбец, как: if df['Close']>df['Open']:
df['sum']=df['Close']-df['Open']
2.And почему я не могу, как группа : grouped = df.groupby([df.index.year, df.index.day,df['Close'>df['Open'])
Добавить новый столбец в панд объекта dataframe колонке с математикой
не полностью undestand механика GroupBy
3.How я могу поставить результат в новый столбец, как:
for (k1, k2), group in grouped:
df['new_col']=group[group['Close']>group['Open']]['Close']-group[group['Close']>group['Open']]['Open']
или, может быть, лучший способ.
Это решение работы. Pls дает пример не встроенный func. – yuran
Вы могли бы предоставить данные, которые я могу вырезать/вставить в свой терминал. Это облегчило бы вам полный ответ. – Vincent
Thx Vincent за помощью. Я представил данные в качестве вашего запроса. – yuran