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

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

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

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

Q&A

解決済

2回答

842閲覧

Datetimeindex型yyyymmdd hh:mm:ssのhh:mm:ssだけ取り出したい。

NoPython_Nolife

総合スコア49

Python 3.x

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

0グッド

1クリップ

投稿2018/05/29 11:53

下記のようなデータフレームのDatetimeindex型のインデックスを取り出して、時刻のみ抽出したいのです。

Datetimeindex型列1列2
2018-05-28 18:01:00100200
2018-05-28 18:05:00100200
2018-05-28 18:08:00100200
2018-05-28 18:11:00100200
2018-05-28 18:13:00100200

list_time = [18:01:00,18:05:00,18:11:00,18:13:00]

ご教示頂けると助かります。
宜しくお願い致します。

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

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

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

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

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

guest

回答2

0

ベストアンサー

df.index.time.tolist() でよいかと思います。

Python

1import pandas as pd 2import io 3 4data = """Datetimeindex型,列1,列2 52018-05-28 18:01:00,100,200 62018-05-28 18:05:00,100,200 72018-05-28 18:08:00,100,200 82018-05-28 18:11:00,100,200 92018-05-28 18:13:00,100,200 10""" 11 12df = pd.read_csv(io.StringIO(data), parse_dates=['Datetimeindex型']) 13df = df.set_index('Datetimeindex型') 14ret = df.index.time.tolist() 15print(ret) 16# [datetime.time(18, 1), datetime.time(18, 5), datetime.time(18, 8), datetime.time(18, 11), datetime.time(18, 13)]

【補足】
もし欲しいのが 文字列 のリストだとしたら

Python

1ret = df.index.strftime('%T').tolist() 2print(type(ret)) 3['18:01:00' '18:05:00' '18:08:00' '18:11:00' '18:13:00']

です

投稿2018/05/29 12:03

編集2018/05/29 12:09
magichan

総合スコア15898

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

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

NoPython_Nolife

2018/05/31 11:09

御礼のコメントが遅れてしまい、大変申し訳ありません。まさに求めていた内容でした!大変助かりました!ありがとうございました。
guest

0

文字列にしたい場合、datetime.time型に変換したい場合のサンプルです。

python

1>>> import datetime 2>>> d = datetime.datetime.now() 3>>> d.strftime("%H:%M:%S") 4'20:58:10' 5>>> d.time() 6datetime.time(20, 58, 10, 425408)

pandasで処理したければこんな感じで。

python

1>>> df = pd.DataFrame([[d],[d],[d],[d],[d],[d]]) 2>>> df[0] 30 2018-05-29 20:58:10.425408 41 2018-05-29 20:58:10.425408 52 2018-05-29 20:58:10.425408 63 2018-05-29 20:58:10.425408 74 2018-05-29 20:58:10.425408 85 2018-05-29 20:58:10.425408 9Name: 0, dtype: datetime64[ns] 10>>> df[0].apply(lambda x:x.time()) 110 20:58:10.425408 121 20:58:10.425408 132 20:58:10.425408 143 20:58:10.425408 154 20:58:10.425408 165 20:58:10.425408 17Name: 0, dtype: object 18>>> df[0].apply(lambda x:x.strftime("%H:%M:%S")) 190 20:58:10 201 20:58:10 212 20:58:10 223 20:58:10 234 20:58:10 245 20:58:10 25Name: 0, dtype: object

投稿2018/05/29 12:00

hayataka2049

総合スコア30933

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

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

NoPython_Nolife

2018/05/31 11:11

ありがとうございます!こういった方法があるんですね。大変参考になりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問