Python 我怎样才能使熊猫时间数据作为分母?
我试图将pandas(0.22.0)Timedelta除以TimedeltaIndex,以获得分数值的索引。例如:Python 我怎样才能使熊猫时间数据作为分母?,python,pandas,Python,Pandas,我试图将pandas(0.22.0)Timedelta除以TimedeltaIndex,以获得分数值的索引。例如: >>> td_index = pd.TimedeltaIndex(['1 days', '2 days', '3 days']) >>> td_index TimedeltaIndex(['1 days', '2 days', '3 days'], dtype='timedelta64[ns]', freq=None) >>>
>>> td_index = pd.TimedeltaIndex(['1 days', '2 days', '3 days'])
>>> td_index
TimedeltaIndex(['1 days', '2 days', '3 days'], dtype='timedelta64[ns]', freq=None)
>>> td = pd.Timedelta('1D')
>>> td
Timedelta('1 days 00:00:00')
>>> td_index / td # expected, like division
Float64Index([1.0, 2.0, 3.0], dtype='float64')
>>> td / td_index # unexpected, why the same as above?
Float64Index([1.0, 2.0, 3.0], dtype='float64')
>>> td.total_seconds() / td_index.total_seconds() # this works in a pinch
Float64Index([1.0, 0.5, 0.3333333333333333], dtype='float64'
似乎前者,即分母中包含时间增量的,可以被认为是,但我不确定为什么将索引放入分母中会有相同的行为,特别是当此行为与其他索引显示的行为不同时。例如,这似乎不适用于直接使用Float64Index:
>>> pd.Float64Index([1, 2, 3]) / 1)
Float64Index([1.0, 2.0, 3.0], dtype='float64')
>>> 1 / pd.Float64Index([1, 2, 3]))
Float64Index([1.0, 0.5, 0.3333333333333333], dtype='float64') # the behavior I want
.total_seconds()
)这只完全回答了你的第二个问题 为什么熊猫时间三角洲和时间三角洲指数的行为是这样的? 您可以查看,尤其是
\uuuuu truediv\uuuu
,在这里可以看到各种类型的除法逻辑
有没有办法用TimedeltaIndex和Timedelta实现类似浮点的除法?
不。从源代码判断,所有的比较,在后台,都涉及到在应用除法之前转换或检索浮点数。这是有意义的,因为datetime
对象是建立在数字数据上的
您的timedelta
对象内部存储在ns中。例如,td.delta
或td.value
都返回86400000000000
当然,没有理由需要转换为秒<代码>td.days/td_index.days也可以