次のようなデータフレームがあります。
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 2016910 entries, 2009-01-02 04:51:00 to 2012-11-02 20:00:00
Freq: T
Data columns:
X1 2016910 non-null values
X2 2016910 non-null values
X3 2016910 non-null values
X4 2016910 non-null values
X5 2016910 non-null values
dtypes: float64(5)
そして、日付の範囲全体で特定の時間だけにアクセスして「フィルタリング」したいと思います。たとえば、時間が 13:00:00 から 14:00:00 の間にあるすべての行を含むデータフレームを返したいのですが、すべての日付についてです。CSV ファイルからデータを読み取っていて、日時は 1 つの列ですが、入力 CSV ファイルに別の日付と時刻を含めることも簡単にできます。別の日付と時刻のルートを試し、マルチインデックスを作成しましたが、作成すると、2 つのインデックス列ができてしまいました。時刻だけではなく、間違った日付と正しい時刻。私のマルチインデックス試行の入力データは次のようになりました。
20090102,04:51:00,89.9900,89.9900,89.9900,89.9900,100
20090102,05:36:00,90.0100,90.0100,90.0100,90.0100,200
20090102,05:44:00,90.1400,90.1400,90.1400,90.1400,100
20090102,05:50:00,90.0500,90.0500,90.0500,90.0500,500
20090102,05:56:00,90.1000,90.1000,90.1000,90.1000,300
20090102,05:57:00,90.1000,90.1000,90.1000,90.1000,200
このコードを使用して読み込もうとしました:
singledf = pd.DataFrame.from_csv("inputfile",header=None,index_col=[0,1],parse_dates=True)
その結果、次のようなデータフレームが作成されました。
singledf.sort()
singledf
<class 'pandas.core.frame.DataFrame'>
MultiIndex: 716244 entries, (<Timestamp: 2009-01-02 00:00:00>, <Timestamp: 2012-11-04 04:51:00>) to (<Timestamp: 2012-11-02 00:00:00>, <Timestamp: 2012-11-04 20:00:00>)
Data columns:
X2 716244 non-null values
X3 716244 non-null values
X4 716244 non-null values
X5 716244 non-null values
X6 716244 non-null values
dtypes: float64(4), int64(1)
マルチインデックスのアプローチは完全に間違っているかもしれませんが、それは私が試したことの 1 つです。日時オブジェクトの使用に固執しているようで、インデックス列に日付や時刻だけでなく日時を強制したいと考えています。非マルチインデックス試行のソース CSV ファイルは次のようになります。
20090102 04:51:00,89.9900,89.9900,89.9900,89.9900,100
20090102 05:36:00,90.0100,90.0100,90.0100,90.0100,200
20090102 05:44:00,90.1400,90.1400,90.1400,90.1400,100
20090102 05:50:00,90.0500,90.0500,90.0500,90.0500,500
20090102 05:56:00,90.1000,90.1000,90.1000,90.1000,300
私はパンダ.9を使用しています。どんな提案でも大歓迎です!