python numpy.datetime64 的坑(與datetime之間的轉換,以及pandas獲取指定時間段內容問題)

好久沒寫博客了,最近在寫項目時用到了 numpy.datetime64這個神坑,遇到了太多的問題,百度資料也很少(還是去stackoverflow搜吧),大多數還是錯的。因此在這裏做個總結,寫個技術筆記,希望也能幫到大家吧!

  1. datetime64 與 datetime.datetime的相互轉換:
    一行代碼解決:
    (dt64 - np.datetime64('1970-01-01T00:00:00Z')) / np.timedelta64(1, 's') #dt64爲datetime64類型的變量
  2. 如何從pandas.DataFrame結構中獲取一段時間內的數據(前提要有時間列):
    這裏解決方式比較簡單,但又比較巧妙,pandas裏的DataFrame 以及Series結構都是支持傳入一個同樣長度的bool型列表(也可也是array)數據篩選的:
    start = timelist > startTime # timelist爲pandas的dataframe裏的時間列,又或者是一個值爲datetime64類型的list或者array,得到的結果是一個值爲bool類型的list或者array
    同樣
    end = timelist < endTime
    res = start == end # 用==判等符號求start與end的交集
    最後
    res = df[res] # df 爲DataFrame
    或者
    res = content[res] # content爲Series,與timelist一一對應

注意datetime64不支持直接獲取年月日,獲取比較麻煩,建議轉成datetime.datetime再通過 param.year獲取吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章