私は以下のPandas DataFrameを持っていますが、列見出し値の更新やヘッダー値へのアクセスに問題があります(たとえば、ヘッダーから(lon、lat)位置に時間をプロットするなど)。次いで、このようになりpandas MultiIndex列ヘッダーを変更またはアクセスするにはどうすればよいですか?
df = pd.DataFrame(columns = ["id0", "id1", "id2"])
df.loc[2012]= [24, 25, 26]
df.loc[2013]= [28, 28, 29]
df.loc[2014]= [30, 31, 32]
df.columns = pd.MultiIndex.from_arrays([df.columns, [66,67,68], [110,111,112]],
names=['id','lat','lon'])
:
>>> df
id id0 id1 id2
lat 66 67 68
lon 110 111 112
2012 24.0 25.0 26.0
2013 28.0 28.0 29.0
2014 30.0 31.0 32.0
Iはdf['id0']
、又はplot(df.ix[2014])
ためしかし(lon,lat)
に基づい(x,y)
位置に緯度や経度を調整できるようにしたいです。
私が理解する限り、OPはマルチインデックスを修正したいと考えています。 –
はい、私はlon、latを修正したいと思います。しかし、そうでなければ、私のデータフレームは〜1000倍(行)と〜500,000ID(列)を持ち、それぞれがlonとlatを持ちます。各列の位置をどのようにトラッキングできますか? 'pd.IndexSlice'構文は50万項目あるので動作しません。すべての緯度を取得するための 'df.loc [2014、 'lat']'のような構文はありますか? – mankoff
あなたの例は、 '2014'がすべての 'lats'に対応することを示唆しています。その場合、 'df.columns.get_level_values( 'lat')'を使うことができます。また、あなたの問題の次元を考えれば、おそらく移調を考慮する必要がありますか?ベクトル化された操作のスピードアップを向上させる可能性があります。 –