2016-07-30 9 views
1

対datetime64を返し、次のいずれか複数のインデックス パンダDatetimeIndexインデクシングDTYPE:(DTYPE numpyのdatetime64 [NS]と)パンダのDatetimeIndexインデックス作成タイムスタンプ

  • 単一指数
  • のためパンダタイムスタンプ用

    • 別DatetimeIndex

      紛らわしい部分がなるようにタイムスタンプが、同じnp.datetime64しないことである。

      import numpy as np 
      import pandas as pd 
      
      a_datetimeindex = pd.date_range('1/1/2016', '1/2/2016', freq = 'D') 
      print np.in1d(a_datetimeindex[0], a_datetimeindex) 
      

      falseを返します。しかし:

      print np.in1d(a_datetimeindex[0:1], a_datetimeindex) 
      print np.in1d(np.datetime64(a_datetimeindex[0]), a_datetimeindex) 
      

      正しい結果を返します。

      np.datetime64 [ns]の精度はナノ秒ですが、タイムスタンプは切り捨てられていると思いますか?

      私の質問は、DatetimeIndexを作成して、常に同じ(または同等の)データ型にインデックスを付ける方法ですか?

    答えて

    1

    あなたはパンダの種類を操作するためにnumpy関数を使用しています。それらは常に互換性があるわけではありません。

    関数np.in1dは、両方の引数を最初にndarraysに変換します。 DatetimeIndexには変換が組み込まれており、dtype np.datetime64の配列が返されます(DatetimIndex.values)。しかし、Timestampにはそのような機能はなく、変換されません。

    代わりに、例えば使用することができますPythonのキーワードin(最も自然な方法):

    a_datetimeindex[0] in a_datetimeindex 
    

    または要素

    a_datetimeindex.isin(a_list_or_index) 
    

    使用したい場合のコレクションのIndex.isin方法np.in1dは、明示的に両方の引数をnumpy型に変換します。または基礎numpyのアレイ上でそれを呼び出す:

    np.in1d(a_datetimeindex.values[0], a_datetimeindex.values) 
    

    また、それは、同じタイプの2つのコレクションをnp.in1dを使用するために、おそらく安全です:

    np.in1d(a_datetimeindex, another_datetimeindex) 
    

    あるいは

    np.in1d(a_datetimeindex[[0]], a_datetimeindex) 
    
    +0

    優れた、ということ作品、ありがとう! – user3217125

    関連する問題