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

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

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

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

2回答

1663閲覧

Pandasで読み込んだ値を取得する際のKeyError

SatoKenta

総合スコア38

Python

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2020/03/08 07:15

編集2020/03/08 08:36

概要

Pandasのread_csvでcsvを読み込んだのですが、get_valueで値を取得しようとすると特定の列だけKeyErrorで取得に失敗します。
何故でしょうか。

下の例ですと、date, best_bid,best_ask,total_bid_depth,total_ask_depth,volume_by_product とあるうち
dateは取得できますが、best_bidが取得できません。

python実行結果

>>> df_input = pd.read_csv("fx_price.txt", engine='python') >>> print(df_input) date best_bid best_ask total_bid_depth total_ask_depth volume_by_product 0 2020-02-26T15:02:59.257 997305.0 997633.0 1453.69624708 2038.7768117 8414.09400059 1 2020-02-26T15:03:59.95 998923.0 999389.0 1459.9432619 2031.11992611 8410.17144512 2 2020-02-26T15:05:00.63 998539.0 999521.0 1458.41412231 2040.29637346 8402.55105543 3 2020-02-26T15:05:59.427 998380.0 998757.0 1440.1740151 2043.23618297 8403.42293758 4 2020-02-26T15:06:59.93 998426.0 999270.0 1458.15758639 2028.92663713 8398.36991922 .. ... ... ... ... ... ... 561 2020-02-26T16:18:59.97 978638.0 979259.0 1419.55437243 2094.58635954 8557.5752912 562 2020-02-26T16:20:00.767 975555.0 975969.0 1413.78515289 2081.54020844 8551.47486732 563 2020-02-26T16:20:59.517 974083.0 975312.0 1404.60489384 2068.1232661 8580.96098291 564 2020-02-26T16:21:59.467 975334.0 975990.0 1420.19817003 2084.06289165 8581.71065758 565 2020-02-26T16:22:59.32 978511.0 979476.0 1419.7632521 2062.0463778 8609.05476514 [566 rows x 6 columns] >>> print(df_input.get_value(5, 'date')) 2020-02-26T15:07:59.727 # ここまでは想定通り >>> print(df_input.get_value(5, 'best_bid')) # このコマンドを入れたところ、keyerrorが発生します Traceback (most recent call last): File "/root/repo/lstm_test/test/lib/python3.5/site-packages/pandas/core/indexes/base.py", line 2897, in get_loc return self._engine.get_loc(key) File "pandas/_libs/index.pyx", line 107, in pandas._libs.index.IndexEngine.get_loc File "pandas/_libs/index.pyx", line 131, in pandas._libs.index.IndexEngine.get_loc File "pandas/_libs/hashtable_class_helper.pxi", line 1607, in pandas._libs.hashtable.PyObjectHashTable.get_item File "pandas/_libs/hashtable_class_helper.pxi", line 1614, in pandas._libs.hashtable.PyObjectHashTable.get_item KeyError: 'best_bid' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/root/repo/lstm_test/test/lib/python3.5/site-packages/pandas/core/frame.py", line 2835, in get_value return self._get_value(index, col, takeable=takeable) File "/root/repo/lstm_test/test/lib/python3.5/site-packages/pandas/core/frame.py", line 2843, in _get_value series = self._get_item_cache(col) File "/root/repo/lstm_test/test/lib/python3.5/site-packages/pandas/core/generic.py", line 3270, in _get_item_cache values = self._data.get(item) File "/root/repo/lstm_test/test/lib/python3.5/site-packages/pandas/core/internals/managers.py", line 949, in get loc = self.items.get_loc(item) File "/root/repo/lstm_test/test/lib/python3.5/site-packages/pandas/core/indexes/base.py", line 2899, in get_loc return self._engine.get_loc(self._maybe_cast_indexer(key)) File "pandas/_libs/index.pyx", line 107, in pandas._libs.index.IndexEngine.get_loc File "pandas/_libs/index.pyx", line 131, in pandas._libs.index.IndexEngine.get_loc File "pandas/_libs/hashtable_class_helper.pxi", line 1607, in pandas._libs.hashtable.PyObjectHashTable.get_item File "pandas/_libs/hashtable_class_helper.pxi", line 1614, in pandas._libs.hashtable.PyObjectHashTable.get_item KeyError: 'best_bid' >>> print(df_input.columns) Index(['date', ' best_bid', ' best_ask', ' total_bid_depth', ' total_ask_depth', ' volume_by_product'], dtype='object')

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

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

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

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

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

can110

2020/03/08 07:26

print(df_input.columns)した結果を追記ください。
SatoKenta

2020/03/08 08:35

こうなりました。 >>> print(df_input.columns) Index(['date', ' best_bid', ' best_ask', ' total_bid_depth', ' total_ask_depth', ' volume_by_product'], dtype='object')
yureighost

2020/03/08 08:42

そもそもget_valueは非推奨になっていて、自分の環境だとdateでもエラーになります。 atを使うのはだめですか? print(df_input.at[5, 'best_bid'])
guest

回答2

0

列名に空白が含まれています。
pd.read_csv("fx_price.txt", skipinitialspace=True,~)のようにskipinitialspaceを指定してみてください。

投稿2020/03/08 08:39

can110

総合スコア38266

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

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

0

ベストアンサー

' best_bid'なので、最初に空白が必要なのではないでしょうか。テキストファイルに空白が入っていませんでしょうか。

投稿2020/03/08 08:47

Matsui_hero

総合スコア346

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

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

SatoKenta

2020/03/08 10:36

ご指摘の通りでした! くだらないミスで申し訳ないです、、、
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問