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

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

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

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

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

536閲覧

リストに格納されたデータを期間指定したい

lur_910

総合スコア8

Python 3.x

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

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/12/04 05:11

リストに格納されたデータから、特定の月と日付以降のデータを抜き出したいです。
よろしくお願いします。

以下の例ではどのようなコードを書けばいいでしょうか。
【例】
2015-10-16から2018-12-03までのデータがあるとして、その中から
2017-01-01から2018-01-01までのデータを抜き出す。

↓すべての範囲のデータを取得することはできました。

Python3

1import tweepy 2import csv 3import datetime 4import pandas as pd 5import numpy as np 6 7consumer_key = "" 8consumer_secret = "" 9access_key = "" 10access_secret = "" 11 12 13auth = tweepy.OAuthHandler(consumer_key, consumer_secret) 14auth.set_access_token(access_key, access_secret) 15api = tweepy.API(auth) 16 17#ツイート取得 18tweet_data = [] 19 20for tweet in tweepy.Cursor(api.user_timeline,screen_name='アカウント名').items(): 21 tweet_data.append([tweet.created_at,tweet.text.replace('\n',''),tweet.favorite_count,tweet.retweet_count]) 22print(tweet_data)

実行結果

[[datetime.datetime(2018, 12, 3, 9, 23), 'ツイート内容', 0, 26],…… ……[datetime.datetime(2015, 10, 16, 06, 31, 32), 'ツイート内容, 174, 162]] created_at text fav RT 0 2018-12-03 09:23:00 'ツイート内容' 0 26 1 2018-12-03 03:00:14 ... 36 ... ... ... ... 2110 2015-10-16 12:01:36 ... 25 2111 2015-10-16 06:31:32 ... 162 [2112 rows x 4 columns]

しかし、日付で期間を区切って抜き出そうとするとエラーが出ます

Python3

12 3#ツイート取得 4tweet_data = [] 5 6for tweet in tweepy.Cursor(api.user_timeline,screen_name='アカウント名').items(): 7 tweet_data.append([tweet.created_at,tweet.text.replace('\n',''),tweet.favorite_count,tweet.retweet_count]) 8df = pd.DataFrame(tweet_data) 9print(df['2017-1-1':'2018-1-1']) 10print(tweet_data)

エラーメッセージ(実行結果)

Python3

1TypeError: cannot do slice indexing on <class 'pandas.core.indexes.range.RangeIndex'> with these indexers [2017-1-1] of <class 'str'> 2

前提・実現したいこと

2015-10-16から2018-12-03までのデータがあるとして、その中から2017-01-01から2018-01-01までのデータを抜き出す。

実現したい実行結果

Python3

1[[datetime.datetime(2018, 1, 1, 9, 23), 'ツイート内容', 0, 22],…… 2……[datetime.datetime(2017, 1, 1, 07, 31, 32), 'ツイート内容, 4, 12]] 3 4 created_at text fav RT 50 2018-01-01 09:23:00 'ツイート内容' 0 22 61 2017-12-31 03:00:14 ... 24 7... ... ... ... 8890 2017-01-03 12:00:36 ... 21 9891 2017-01-01 07:31:32 ... 12 10 11[891 rows x 4 columns]

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

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

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

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

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

guest

回答1

0

ベストアンサー

以下にて指定範囲を抽出できます。
参考:Select DataFrame rows between two dates

Python

1import pandas as pd 2import datetime 3 4l = [[datetime.datetime(2016,10,1),'a'],[datetime.datetime(2017,10,1),'b'],[datetime.datetime(2018,10,1),'c']] 5df = pd.DataFrame(l) 6print(df) 7 8df2 = df[(df[0] >= datetime.datetime(2017,1,1)) & (df[0] <= datetime.datetime(2018,1,1))] 9print(df2) 10""" 11 0 1 121 2017-10-01 b 13"""

投稿2018/12/04 07:03

can110

総合スコア38262

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

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

lur_910

2018/12/04 09:13

can110様 ありがとうございます。おかげさまで解決いたしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問