亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在熊貓/ Python中對dtype:timedelta64 [ns]求和?

如何在熊貓/ Python中對dtype:timedelta64 [ns]求和?

catspeake 2021-05-06 15:13:11
我正在使用python中的pand處理時間。我想總結一下兩個日期之間經過的時間:0   2012-03-06 14:22:000   2012-06-02 11:29:001   2012-04-16 20:51:001   2012-04-28 09:57:00為此,我計算用0索引的前兩個日期之間經過的時間,如下所示:dt0 = df.end[0] - df.start[0]  out: 87 days 21:07:00dtype: timedelta64[ns]在接下來的2個日期之間也一樣:dt1 = df.end[1] - df.start[1]  out: 11 days 13:06:00dtype: timedelta64[ns]哪個工作正常,但是當我兩次相加時:dt2 = dt1 + dt0 我得到dt2 = NaT而不是87天21:07:00 + 11天13:06:00的總和。有人可以幫忙嗎?下面是相同問題的另一個示例的屏幕截圖:將a和b加起來,兩個dtype:timedelta64 [ns]不起作用,為什么?
查看完整描述

1 回答

?
慕姐8265434

TA貢獻1813條經驗 獲得超2個贊

瞧,這就是為什么我明確希望您打印類型。dt1而dt0不是<class 'pandas._libs.tslibs.timedeltas.Timedelta'>,他們是pandas.Series。


當您添加兩個時,Series它會根據索引對齊。由于dt1和dt2不共享相同的索引,因此它將用空值填充缺失值(NaT在這種情況下),然后執行加法。默認情況下,執行加法時它不會忽略空值,因此您所看到的是x + NaT = NaT數學的工作方式。


樣本數據

import pandas as pd


a = pd.Series(pd.Timedelta(1,'d'), index=[21005])

#21005   1 days

#dtype: timedelta64[ns]


b = pd.Series(pd.Timedelta(2,'d'), index=[16992])

#16992   2 days

#dtype: timedelta64[ns]

代碼

加法將與索引對齊。他們沒有指數,所以你得到NaT。


a+b

#16992   NaT

#21005   NaT

#dtype: timedelta64[ns]

您真正想要做的就是添加值,而不管索引如何:


a.values+b.values

#array([259200000000000], dtype='timedelta64[ns]')

不過說真的,你應該改變你的代碼,以便dt0和dt1只是值,如果你真的沒有必要為pd.Series。


查看完整回答
反對 回復 2021-05-11
  • 1 回答
  • 0 關注
  • 322 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號