Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我怎样才能使熊猫时间数据作为分母?_Python_Pandas - Fatal编程技术网

Python 我怎样才能使熊猫时间数据作为分母?

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) >>>

我试图将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 = 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
  • 为什么熊猫时间三角洲和时间三角洲指数会这样
  • 是否有任何方法可以使用TimedeltaIndex和Timedelta实现类似浮点的除法,即不首先转换为不同的表示形式(如使用
    .total_seconds()

  • 这只完全回答了你的第二个问题

    为什么熊猫时间三角洲和时间三角洲指数的行为是这样的?

    您可以查看,尤其是
    \uuuuu truediv\uuuu
    ,在这里可以看到各种类型的除法逻辑

    有没有办法用TimedeltaIndex和Timedelta实现类似浮点的除法?

    不。从源代码判断,所有的比较,在后台,都涉及到在应用除法之前转换或检索浮点数。这是有意义的,因为
    datetime
    对象是建立在数字数据上的

    您的
    timedelta
    对象内部存储在ns中。例如,
    td.delta
    td.value
    都返回86400000000000

    当然,没有理由需要转换为秒<代码>td.days/td_index.days也可以