2

インデックスが日時で構成されるデータフレームがあります。アンカー日付もあり、2 番目のデータフレームにアンカー日付の 1000 日前のみを含めたいことがわかっています。これを行う最善の方法は何ですか?

4

1 に答える 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 に答える