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

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

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

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

Q&A

解決済

3回答

3231閲覧

Pythonで日毎に処理したい

gymgym

総合スコア97

Python 3.x

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

0グッド

0クリップ

投稿2018/08/06 07:45

編集2018/08/06 07:51

Python

1#ある日毎にデータが格納されているデータフレームdfに対して 2sentence = df[df['create_at'].dt.date == dt.date(2016,7,1)] 3print(sentence) 4sentence = df[df['create_at'].dt.date == dt.date(2016,7,2)] 5print(sentence) 6sentence = df[df['create_at'].dt.date == dt.date(2016,7,3)] 7print(sentence) 8sentence = df[df['create_at'].dt.date == dt.date(2016,7,4)] 9print(sentence) 10111213sentence = df[df['create_at'].dt.date == dt.date(2017,7,1)] 14print(sentence)

以上のような処理をfor文で行いたいのですが、日毎の処理をfor文で行う場合どのようにしたら良いでしょうか。

よろしくお願いいたします。

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

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

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

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

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

guest

回答3

0

ベストアンサー

単純に1年間のループを行う場合

Python

1for d in pd.date_range('2016/07/01', '2017/06/30', freq='1d'): 2 print(df[df['create_at'].dt.date == d.date()])

create_at列に存在する日付データだけでループを行う場合

Python

1for idx, data in df.groupby(df.create_at.dt.date): 2 print(idx) 3 print(data)

でよいのでは無いでしょうか

投稿2018/08/06 08:22

magichan

総合スコア15898

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

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

0

日毎の処理をfor文で行う場合

datetime.timedeltaを使えば良いのでは。

Python

1>>> import datetime as dt 2>>> 3>>> date = dt.date(2017, 9, 1) 4>>> end_date = dt.date(2018, 9, 1) 5>>> 6>>> while date <= end_date: 7... print(date) 8... date += dt.timedelta(days=1) 9... 102017-09-01 112017-09-02 122017-09-03 13... 142018-08-30 152018-08-31 162018-09-01

もっとpandasらしく書く方法もあるとは思いますが。

投稿2018/08/06 07:55

LouiS0616

総合スコア35660

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

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

0

ふつうはcronとかで定期的に実行させますね

投稿2018/08/06 07:48

y_waiwai

総合スコア87749

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

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

gymgym

2018/08/06 07:53

すみません。 書き方が悪かったです。 データフレームの中にすでに1年間分のデータが入っていて、それを日毎に実行していきたいということでした。
y_waiwai

2018/08/06 07:58

その実行の時間(1分か1時間かしらないが)のために24時間Pythonで待ちループ実行させるというのは無駄でしか無いと思うんですが。
y_waiwai

2018/08/06 08:44

おまけに、そのコードを1年間(あるいはそれ以上?)動かし続けなければならないというのはかなり難易度高いと思うんだけど
umyu

2018/08/06 09:02

@y_waiwaiさんへ 横レスですが、データがcreate_at列に日単位で入っていて、ループで日単位に集計処理を行いたいんだと思います。
y_waiwai

2018/08/06 09:05

ああ、そゆはなしですか。理解しました かんちがいしてますねw
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問