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

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

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

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

Q&A

解決済

1回答

2564閲覧

python get_loc利用の際のエラーに関して

goma-goma

総合スコア39

Python

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

0グッド

0クリップ

投稿2020/02/10 11:59

編集2020/02/12 10:05

以下のようなpythonコードを実行した際に、
TypeError: ufunc subtract cannot use operands with types dtype('O') and dtype('<m8[ns]')
というようなエラーが出てしまいます。
こちら改善する方法を教えていただきたいです。よろしくお願いします。

python

1near_time = df.index[df.index.get_loc(time, method='nearest')]

type(df):<class 'pandas.core.series.Series'>
type(time):<class 'pandas._libs.tslibs.timestamps.Timestamp'>

dfのデータ形式(indexはdatatime型)
イメージ説明

 
timeデータ形式
イメージ説明

※【追記】
こちら、実行環境はpython3.6.1でしたが、
python3.7であれば上記エラーが発生しないことがわかりました。
こちら、python3.6の環境で、上記と同様の処理が行えるようにする方法がわかりましたら教えていただきたいです。

df
└<class 'pandas.core.series.Series'>
df.index
└<class 'pandas.core.indexes.datetimes.DatetimeIndex'>
time
└<class 'pandas._libs.tslibs.timestamps.Timestamp'>
となります。

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

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

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

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

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

can110

2020/02/11 00:57

提示エラーが再現しません。 提示されている「type(df):<class 'pandas.core.series.Series'>」と 「dfのデータ形式(indexはdatatime型)」(=SeriesではなくDataFrame?)は矛盾しています。 今一度df、df.info()、df.index、timeの型を確認し提示ください。 また、エラーは発生場所がわかるように全文(Traceback)を提示ください。
goma-goma

2020/02/12 09:59

すみません、 df └<class 'pandas.core.series.Series'> df.index └<class 'pandas.core.indexes.datetimes.DatetimeIndex'> time └<class 'pandas._libs.tslibs.timestamps.Timestamp'> となります。 どうやら、python3.6の環境だと上記エラーがでるものの、python3.7だとエラーは起きないようです。 こちら3.6でも上記と同じようなことを実現可能にする方法がわかりましたら教えていただきたいです。
hayataka2049

2020/02/13 15:22

そのままコピペすればエラーが再現できるコードをご提示ください。データもすべてコード中に埋め込んでください。 また、pandasのバージョン情報をご記入ください。
guest

回答1

0

自己解決

pythonバージョンを3.7に上げる、
若しくは3.6のままの場合は、以下の対応をすることで解決しました。

1.データフレームに列を一つ追加し、「この変数timeの値」と第1列との時差を格納。
2.その列の値が最小であるような列の番号を取得。

投稿2020/02/21 08:00

goma-goma

総合スコア39

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問