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

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

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

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

Q&A

解決済

1回答

482閲覧

python データ形式 timestamp

s_kj

総合スコア32

Python 3.x

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

0グッド

1クリップ

投稿2021/06/20 13:32

timestamp形式のデータから時間の要素を抽出し、条件分岐の処理を行おうとしています。
しかし、下記のように実行するとif文でエラーが出ます。

エラーメッセージは、str型にはhourの処理ができないよと言うことだと理解しています。

そのため、問題のaについて型を確認してみたのですが、問題なくTimestamp型でした。
なぜaがstr型で認識されているのかが理解できません。

何か見落としていることがあるのでしょうか。

よろしくお願い申し上げます。

a = df.iloc[2, 2] if a.hour = 1: ←ここでエラーが発生 >>>以降の処理 エラーメッセージ >> AttributeError: 'str' object has no attribute 'hour'
print(type(a)) #<class 'pandas._libs.tslibs.timestamps.Timestamp'>

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

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

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

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

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

guest

回答1

0

ベストアンサー

以下のコードを実行してエラーメッセージを含めた結果を教えてください。

python

1a = df.iloc[2, 2] 2print('type(a) is', type(a)) 3print('a.hour is', a.hour) 4if a.hour = 1: 5 print('A')

それを見せていただければ、回答できると思います。

投稿2021/06/20 14:49

ppaul

総合スコア24668

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

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

s_kj

2021/06/20 23:22

ご質問ありがとうございます。 実行結果をご回答します。 >>> type(a) is <class 'pandas._libs.tslibs.timestamps.Timestamp'> a.hour is 12 >>> 一方で、ご提示のコードに追加して a = decision_df.iloc[2, 2] print('type(a) is', type(a)) print('a.hour is', a.hour) if a.hour == 1: print('A') a = decision_df.iloc[2, 2] print(type(a)) print(a) while a.hour != 14: を実行しましたが、同様に「AttributeError: 'str' object has no attribute 'hour'」のエラーが出ました。 出力は、 type(a) is <class 'pandas._libs.tslibs.timestamps.Timestamp'> a.hour is 12 <class 'pandas._libs.tslibs.timestamps.Timestamp'> 2021-04-03 12:30:00.015000 となってからのエラーコードです。 よろしくお願い申し上げます。
ppaul

2021/06/21 04:30

dfと decision_dfという二つのDataFrameがあるのですね。 エラーが出るのは、decision_dfの方だということですか。 それなら、dfの方を調べても関係ないですね。 decision_dfの中身が間違っているのでしょう。
s_kj

2021/06/21 13:51

ppaul様 大変申し訳ございません。 datasetの名前を間違えておりました。 decision_dfはdfの間違いでした。 内容修正しましたので再度ご確認いただけないでしょうか。 よろしくお願い申し上げます。 >>> type(a) is <class 'pandas._libs.tslibs.timestamps.Timestamp'> a.hour is 12 >>> 一方で、ご提示のコードに追加して a = df.iloc[2, 2] print('type(a) is', type(a)) print('a.hour is', a.hour) if a.hour == 1: print('A') a = df.iloc[2, 2] print(type(a)) print(a) while a.hour != 14: を実行しましたが、同様に「AttributeError: 'str' object has no attribute 'hour'」のエラーが出ました。 出力は、 type(a) is <class 'pandas._libs.tslibs.timestamps.Timestamp'> a.hour is 12 <class 'pandas._libs.tslibs.timestamps.Timestamp'> 2021-04-03 12:30:00.015000 となってからのエラーコードです。 よろしくお願い申し上げます。
s_kj

2021/06/21 14:11

自己解決できました。有り難うございました。 仰るとおりで、datasetの中身がおかしかったです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問