Ich habe eine Klasse geschrieben, die Pandas Datenrahmen verwendet, die bei bestimmten Frequenzen abgetastet werden. Die Argumente, die verwendet werden, um diese Frequenzen zu spezifizieren, sind die in Pandas gebräuchlichen frequency strings (zB 'H', '15min', 'D')Python Pandas Frequenz String Vergleiche
Eine meiner Methoden muss diese Frequenzen miteinander vergleichen - wie viele von eins passt in den anderen. Gibt es einen klugen, direkten Weg, dies zu tun? Ich schrieb die folgenden, aber es scheint so klobig und indirekt:
def _get_relative_timediff(self, freq1, freq2):
""" Returns how many (based on seconds) of frequency 2 goes into frequency 1
"""
old = pd.period_range(start='1/1/1900', freq=freq1, periods=2)[1].to_timestamp()
new = pd.period_range(start='1/1/1900', freq=freq2, periods=2)[1].to_timestamp()
old = (old - pd.to_datetime('1/1/1900')).seconds
new = (new - pd.to_datetime('1/1/1900')).seconds
relative = float(old/new)
return relative
Es funktioniert:
my_object._get_relative_timediff('8H', 'min')
480.0
Aber ich muss sich vorstellen, gibt es eine bessere Art und Weise (oder sollte). Vielen Dank!