Les Pandas OHLC agrégation sur OHLC de données
Je comprends que OHLC ré-échantillonnage des données de séries chronologiques dans les Pandas, en utilisant une colonne de données, fonctionne parfaitement, par exemple sur les points suivants dataframe:
>>df
ctime openbid
1443654000 1.11700
1443654060 1.11700
...
df['ctime'] = pd.to_datetime(df['ctime'], unit='s')
df = df.set_index('ctime')
df.resample('1H', how='ohlc', axis=0, fill_method='bfill')
>>>
open high low close
ctime
2015-09-30 23:00:00 1.11700 1.11700 1.11687 1.11697
2015-09-30 24:00:00 1.11700 1.11712 1.11697 1.11697
...
Mais que dois-je faire si les données sont déjà dans une OHLC format? De ce que je peux rassembler les OHLC méthode de l'API calcule un OHLC tranche pour chaque colonne, donc si mes données sont dans le format:
ctime openbid highbid lowbid closebid
0 1443654000 1.11700 1.11700 1.11687 1.11697
1 1443654060 1.11700 1.11712 1.11697 1.11697
2 1443654120 1.11701 1.11708 1.11699 1.11708
Quand j'ai essayer de ré-échantillonnage-je obtenir une OHLC pour chacune des colonnes, comme suit:
openbid highbid \
open high low close open high
ctime
2015-09-30 23:00:00 1.11700 1.11700 1.11700 1.11700 1.11700 1.11712
2015-09-30 23:01:00 1.11701 1.11701 1.11701 1.11701 1.11708 1.11708
...
lowbid \
low close open high low close
ctime
2015-09-30 23:00:00 1.11700 1.11712 1.11687 1.11697 1.11687 1.11697
2015-09-30 23:01:00 1.11708 1.11708 1.11699 1.11699 1.11699 1.11699
...
closebid
open high low close
ctime
2015-09-30 23:00:00 1.11697 1.11697 1.11697 1.11697
2015-09-30 23:01:00 1.11708 1.11708 1.11708 1.11708
Est-il rapide(ish) solution de contournement pour ce que quelqu'un est prêt à partager s'il vous plaît, sans avoir à me obtenir jusqu'aux genoux dans les pandas manuel?
Grâce.
ps, il y a cette réponse - La conversion de OHLC données de stock dans un délai différent avec python et les pandas - mais c'était il y a 4 ans, donc j'espère que certains progrès ont été accomplis.
OriginalL'auteur user3439187 | 2016-03-25
Vous devez vous connecter pour publier un commentaire.
Ceci est similaire à la réponse que vous avez lié, mais un peu plus propre, et plus rapide, car il utilise l'optimisation des agrégations, plutôt que de les lambdas.
Noter que le
resample(...).agg(...)
syntaxe nécessite pandas version0.18.0
.Aucune idée si je pouvais ajouter le
fill_method='bfill'
méthode dans la solution à traiter avec la NAN?Oubliez cette dernière question, la méthode a changé .bfill()
Voici une alternative si vous exécutez dans l'erreur avec ctime de l'indice ci-dessus: df = df.set_index('datetime')
J'ai eu à utiliser ces paramètres pour correspondre avec mes graphiques de la plateforme
df.resample('1H', closed = 'right',label = 'right').agg({'open': 'first', 'high': 'max', 'low': 'min', 'close': 'last'})
OriginalL'auteur chrisb
Vous devez utiliser un OrderedDict de conserver les lignes de commande dans les versions plus récentes de pandas, comme suit:
OriginalL'auteur Benjamin Crouzier