pandas.DataFrameのset_indexについての勘違い
まさに勘違いをしていてハマった。
DataFrame.set_index(['Time'])のように書くと、DataFrameにカラムを追加してくれるのだと勘違いしていた。
全然違うじゃん。
#coding:utf-8 import pandas as pd import numpy as np df = pd.DataFrame(np.random.randint(0, 10, (5,4)), columns=list('ABCD'), ) #df.index = '1' print df
実行結果は下記。
※random.randintを使用しているので実行するたびに結果は変わる。
A B C D
0 7 9 8 1
1 5 1 4 1
2 8 6 1 5
3 1 1 4 4
4 1 6 0 5
これに続いて下記を実装。
df.set_index(['A','B']) print df
結果は下記。
A B C D
0 7 9 8 1
1 5 1 4 1
2 8 6 1 5
3 1 1 4 4
4 1 6 0 5
これで正しいのだけど、勘違いで、次のように実装してTimeという列が追加されると思っていた。
df.set_index(['Time']) print df
結果は下記エラー。
そんなキーは無いよとさ。
File "pandas\index.pyx", line 137, in pandas.index.IndexEngine.get_loc (pandas\index.c:3979) File "pandas\index.pyx", line 157, in pandas.index.IndexEngine.get_loc (pandas\index.c:3843) File "pandas\hashtable.pyx", line 668, in pandas.hashtable.PyObjectHashTable.get_item (pandas\hashtable.c:12265) File "pandas\hashtable.pyx", line 676, in pandas.hashtable.PyObjectHashTable.get_item (pandas\hashtable.c:12216) KeyError: 'Time'
同じ人が「Can't set index of a pandas data frame - getting “KeyError”」で書いていたので解決。