将时间增量转换为天数的float64

时间:2019-07-02 21:49:08

标签: python pandas

我有两个系列的熊猫约会时间。我为数据框中的每一行减去它们,并添加一列以获得两个日期时间之间的时间增量。随后,我想使用该时间增量来扩展另一个功能。因此,我想对该时间增量进行一些划分。没有骰子。

TypeError:无法按TimedeltaArray划分float64数据

最后一行引发错误。

我试图通过float64(i)通过循环运行pd系列


#Add column of number of days to next sample
df['daysToNextSample1']=df['nextSampleDate1']-df['currentDate']
df['percentChange']=df['percentChange']/df['daysToNextSample1']/(365.25/4)

2 个答案:

答案 0 :(得分:1)

设置

now = pd.Timestamp('now').normalize()
df = pd.DataFrame(dict(
    nextSampleDate1=pd.date_range(now, periods=10),
    currentDate=now
))

df

  nextSampleDate1 currentDate
0      2019-07-02  2019-07-02
1      2019-07-03  2019-07-02
2      2019-07-04  2019-07-02
3      2019-07-05  2019-07-02
4      2019-07-06  2019-07-02
5      2019-07-07  2019-07-02
6      2019-07-08  2019-07-02
7      2019-07-09  2019-07-02
8      2019-07-10  2019-07-02
9      2019-07-11  2019-07-02

Timedelta列除以一天的Timedelta

oneday = pd.Timedelta(days=1)

df['daysToNextSample1'] = (df['nextSampleDate1'] - df['currentDate']) / oneday

df

  nextSampleDate1 currentDate  daysToNextSample1
0      2019-07-02  2019-07-02                0.0
1      2019-07-03  2019-07-02                1.0
2      2019-07-04  2019-07-02                2.0
3      2019-07-05  2019-07-02                3.0
4      2019-07-06  2019-07-02                4.0
5      2019-07-07  2019-07-02                5.0
6      2019-07-08  2019-07-02                6.0
7      2019-07-09  2019-07-02                7.0
8      2019-07-10  2019-07-02                8.0
9      2019-07-11  2019-07-02                9.0

答案 1 :(得分:1)

在您的情况下,MRE很理想。您不必去猜测df['percentChange']里面的内容给读者。

您可以轻松地在该时间间隔上进行一些划分

pd.Timedelta('1 days 00:00:00') / 1.5
Out[15]: Timedelta('0 days 16:00:00')

24/1.5
Out[16]: 16.0

问题是您正在尝试执行以下操作,这是类型错误:

5.0 / pd.Timedelta('1 days 00:00:00')