Convertir des pandas FREQ string en timedelta
est-il possible de convertir les fréquences représentées par une chaîne telle que "30T" (30 minutes) "2S" (2 secondes) en quelque chose qui peut être comparé à un timedelta?
je cherche un mécanisme interne aux pandas si possible. Codage de toute la conversion de chaîne possible en utilisant un mécanisme tel que ceux-ci ne serait pas robuste.
1 réponses
Dans de nombreux cas, vous pouvez utiliser le to_timedelta
fonction pour cela. Il convertira une chaîne de caractères en timedelta:
In [9]: pd.to_timedelta('30min')
Out[9]: Timedelta('0 days 00:30:00')
In [10]: pd.to_timedelta('2S')
Out[10]: Timedelta('0 days 00:00:02')
cependant, il semble que pd.to_timedelta ('30T') ne fonctionne pas, mais cela peut être considéré comme une caractéristique manquante.
Mais, pour celui-ci, cela fonctionne si vous le convertissez d'abord en un objet de fréquence et le fournissez ensuite à to_timedelta
:
In [19]: from pandas.tseries.frequencies import to_offset
In [20]: pd.to_timedelta(to_offset('30T'))
Out[20]: Timedelta('0 days 00:30:00')
si vous commencez par un freqstr
à partir d'un indice Datetimeindexe, la seconde approche fonctionnera toujours. Mais, vous pouvez également utiliser freq
au lieu de freqstr
, qui renvoie directement un objet fréquence:
In [34]: dtidx = pd.date_range('2012-01-01', periods=5, freq='30min')
In [35]: pd.to_timedelta(dtidx.freq)
Out[35]: Timedelta('0 days 00:30:00')