2016-06-13 9 views
2

私の質問は非常に多くのオープンが終了すると、次の形式で配列を操作する方法についていくつかのアドバイスを探しています:照会営業日に基づいてPythonでのデータ(8 am-10pm)と平日のみ

list: 
[datetime.datetime(2016, 5, 17, 11, 32, 25), 
datetime.datetime(2016, 5, 17, 11, 33, 25), 
datetime.datetime(2016, 5, 17, 11, 34, 25), ... 

私は、(1)営業日だけが考慮されるように配列を操作し、(2)午前8時から午後10時のみ考慮するように配列を操作したいと考えています。私はnumpyを使用するか、これを達成することができますか?リストの形式、つまりdatetime.datetimeを使用することはできますか、これを別の形式に変換することはできますか?

私は、日付と時刻が別々になるようにエポックを分割しようとしました。そう、次のコマンドを実行するには:

myArray.ix[pd.to_datetime(myArray['Epoch']).isin(pd.bdate_range(start='2016-05-16', end='2016-06-15') 

エポック形式は、日付と時刻だったので、myarrayのは今「日付」、「エポック」から構成されているので、私はちょうど3つの別々の列として「値」、これを分割します。

t = pd.bdate_range(start='2016-05-16', end='2016-06-15') 
u = myArray['Date'] 
v = u.isin(t) 

問題は、私が見たものからで、MyArrayというの日付:より良い、このコマンド(これまでは動作しません)とその使用方法を理解するために、私は次のデバッグ行を使用しましたyyyy-mm-yyの形式の[日付]は、tの日付と一致せず、yyyy-mm-ddの形式もあります。これはvを見ると確認でき、その内容はすべて偽です。

答えて

3

あなたが唯一の営業日(1)を選択するためbdate_range()を使用することができます(2)...間の時間を選択するための

In [96]: d.ix[pd.to_datetime(d.Date.dt.date).isin(pd.bdate_range(start='2016-05-16', end='2016-05-22'))] 
Out[96]: 
       Date  val 
0 2016-05-17 11:32:25 0.235264 
1 2016-05-17 11:33:25 0.755800 
2 2016-05-17 11:34:25 0.849591 
3 2016-05-20 12:00:25 0.955704 

between_time()を:

元のインデックスを保存
In [97]: d.set_index('Date').between_time('11:30','11:34') 
Out[97]: 
          val 
Date 
2016-05-17 11:32:25 0.235264 
2016-05-17 11:33:25 0.755800 

In [99]: d.set_index('Date').between_time('11:30','11:34').reset_index() 
Out[99]: 
       Date  val 
0 2016-05-17 11:32:25 0.235264 
1 2016-05-17 11:33:25 0.755800 

サンプルデータフレーム:

In [98]: d 
Out[98]: 
       Date  val 
0 2016-05-17 11:32:25 0.235264 
1 2016-05-17 11:33:25 0.755800 
2 2016-05-17 11:34:25 0.849591 
3 2016-05-20 12:00:25 0.955704 
4 2016-05-21 13:13:13 0.301753 
+0

ありがとうございました!私は自分の道にあると思っていますが、まだそこにはありません。コードを次のように書き直しました:modified_array.ix [pd.to_datetime(modified_array ['Epoch'])。isin(pd.bdate_range(start = '2016-05-17'、end = '2016-05-22') )] "d.Date.date"の省略は、もともとは機能しなかったためです。私は、このコード行でエラーメッセージを受け取らなかったのはなぜこのようなことが起こったのかもしれないが、データフレームに変更はなかった(この場合は "modified_array")。 – pymat

+0

ところで、出力をデバッグしてチェックするために、np.saveを使ってファイルを配列に保存しようとしましたが、読み込みができないファイルが生成されました。 – pymat

関連する問題