質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

200閲覧

データフレームの一部を期間検索して切り取りたい

moto_i

総合スコア20

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/04/07 08:07

データフレームの一部を期間検索して検索終了日から183日前までのデータを取りだしたいと考えています。

実際にどのようにして抽出すればよいでしょうか?

price_fruits :

りんご 値段 オレンジ 値段

2018/1/31 30 400 20 100
2018/2/28 30 400 20 100
2018/3/31 12 400 20 100
2018/4/30 23 400 20 100
2018/5/31 450 400 20 200
2018/6/30 700 500 20 300
2018/7/31 600 500 30 100
2018/8/31 600 500 30 100
2018/9/30 600 400 30 100
2018/10/31 600 400 30 150
2018/11/30 600 400 30 100
2018/12/31 900 350 30 200
2019/1/31 900 350 30 100
2019/2/28 600 400 30 300
2019/3/31 600 400 30 100
2019/4/30 600 400 20 100

期待する結果
りんご 値段  オレンジ 値段
2018/7/31 600 500 30 100
2018/8/31 600 500 30 100
2018/9/30 600 400 30 100
2018/10/31 600 400 30 150
2018/11/30 600 400 30 100
2018/12/31 900 350 30 200
2019/1/31 900 350 30 100

自分が書いているプログラムは下記です。エラーになります。
XXXXXXXXにはどのような条件式を当てはめればよいですか?

Python

1end_year = 2019 2end_month = 1 3end_day = 14 4search_end = str(end_year) + '/' + str(end_month) + '/' + str(end_day) # 検索終了日   5search_end = dt.strptime(search_end, '%Y/%m/%d') # datetime.datetime型に変換 6print(f">>>price_fruits : {price_fruits}") #果物リストデータフレーム 7cast_price_fruits = [] 8cast_price_fruits = price_fruits[ 9 (XXXXXXXXX <= search_end) & (XXXXXXX >= search_end -timedelta(183)) # 範囲終了日から183日前までのデータを取得 10]

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

cast_price_fruits = price_fruits[ (XXXXXXXXX <= search_end) & (XXXXXXX >= search_end -timedelta(183)) # 範囲終了日から183日前までのデータを取得 ]

この部分ですが、時間をインデックスとして指定してなければdf = df.set_index('date')の後にスライスを利用して

search_start = search_end - timedelta(183) cast_price_fruits = price_fruits[search_start : search_end]

が一番シンプルだと思ったのですが、どうでしょうか。

投稿2019/04/07 11:45

bamboo-nova

総合スコア1408

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

moto_i

2019/04/07 11:59

回答ありがとうございます。 このやり方で 2018/7/31~2018/12/31までのデータを抽出できました。 2019/1/14が検索終了日なのですが、 2019/1/31のデータまで抽出したいです。どうしたらよろしいでしょうか?
bamboo-nova

2019/04/07 13:52

end_monthとend_dayを弄れば良いと思いますが汗 誰から貰ったプログラムかは存じませんが、ちゃんとどうなっているか自分なりに調べてから質問をした方が良いと思います...。
moto_i

2019/04/08 12:12

了解しました。ありがとうございます。自力で解決しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問