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