インデックスが日時で構成されるデータフレームがあります。アンカー日付もあり、2 番目のデータフレームにアンカー日付の 1000 日前のみを含めたいことがわかっています。これを行う最善の方法は何ですか?
質問する
2314 次
1 に答える
3
それが最善の方法かどうかはわかりませんが、うまくいくはずです
サンプル DataFrame を作成します。
>>> dates = [pd.datetime(2012, 5, 4), pd.datetime(2012, 5, 5), pd.datetime(2012, 5, 6), pd.datetime(2012, 5, 1), pd.datetime(2012, 5, 2), pd.datetime(2012, 5, 3)]
>>> values = [1, 2, 3, 4, 5, 6]
>>> df = pd.DataFrame(values, dates)
>>> df
>>> df
0
2012-05-04 1
2012-05-05 2
2012-05-06 3
2012-05-01 4
2012-05-02 5
2012-05-03 6
2012 年 5 月 4 日から 2 日間さかのぼるとします。
>>> date_end = pd.datetime(2012, 5, 4)
>>> date_start = date_end - pd.DateOffset(days=2)
>>> date_start, date_end
(datetime.datetime(2012, 5, 2, 0, 0), datetime.datetime(2012, 5, 4, 0, 0))
それでは、ラベルのインデックス付けによって行を取得してみましょう:
>>> df.loc[date_start:date_end]
Empty DataFrame
Columns: [0]
Index: []
これは、インデックスがソートされていないためです。修正しましょう。
>>> df.sort_index(inplace=True)
>>> df.loc[date_start:date_end]
0
2012-05-02 5
2012-05-03 6
2012-05-04 1
日時インデックスによって行を取得することもできます。
>>> df[date_start:date_end]
0
2012-05-02 5
2012-05-03 6
2012-05-04 1
私はまだ Pandas の専門家ではないことを覚えておいてください。しかし、データ分析に関してはとても気に入っています。
それが役に立てば幸い。
于 2013-10-26T11:38:51.877 に答える