2016-10-30 13 views
1

私はpandas.core.series.Seriesを辞書に変換しました。そのデータは各州のトップ3の郡の人口であり、迷惑なインデックス演算子があります私は取り除くことができません。python list-within-dictionary辞書に変換

{('Alabama', 37): 660367.0, ('Alabama', 45): 353089.0, 
('Alabama', 49): 415395.0, ('Alaska', 71): 298695.0, 
('Alaska', 76): 99631.0, ('Alaska', 85): 101095.0, 
('Arizona', 106): 4167947.0, ('Arizona', 109): 1010025.0, 
('Arizona', 110): 406584.0, ('Arkansas', 118): 249672.0, 
('Arkansas', 174): 392664.0, ('Arkansas', 186): 225477.0, ... 

と私はそれを変換したい:辞書には、形式を取り、私はコーディングと、これは修正する本当に簡単なものであることを望んには本当に新しいです{('Alabama', 660367.0), ('Alabama', 353089.0), ... 。私は最初の場所(私は単にdata=dict(data)を使用して)、または多分辞書を介してループの追加データを避けるパンダシリーズを変換するより良い方法があるかどうかわからない...?

+1

data.head()を貼り付けることでデータフレームの内容を共有することで、より良いオプションを示すことができます – Boud

答えて

0

リストの理解度(または類似したもの)で出力データを簡単に変換できます。あなたのデータはdataにある場合は、これらの行のいずれかは、あなたが実際に頼ま何だろうと、それはあなたがしたいデータの種類によって異なります。

out = [(key[0], value) for key, value in data.items()] 
out = tuple((key[0], value) for key, value in data.items()) 
out = set((key[0], value) for key, value in data.items()) 
# In Python 2.7+ this is the same as the above 
out = {(key[0], value) for key, value in data.items()} 

しかし、それらのどちらも、元のとは異なり、辞書です。しかし、これは、辞書の場合、各値に固有のキーが必要ですが、状態名は一意ではないためです。

基本的な考え方は、各アイテムを繰り返し処理し、状態名(キーの最初のエントリであるkey[0])を使用し、それに母集団を追加することです(ちょうどvalue)。

{('Alabama', 660367.0), ('Alabama', 353089.0), …は実際にはセットです(少なくともPython 3の表現ですが、これはPython 2では有効な表記法ではありません)。セットには順序はなく、すべてのエントリは一意であるため、同じサイズの2つの郡を1つのエントリと同じ状態で保存します。

実際に辞書を使用する場合は、キーの対象となるキーとそのキーの値を決定する必要があります。

0

あなたがデータフレームオブジェクトから、しかし、拙速な修正のために欲しいものにこれを変換するためのより良い方法は、あなたが本当にこのようにそれをしたい場合は

...あります{('Alabama', 660367.0), ('Alabama', 353089.0), ... }

あなたが行うことができますこの(python2.7を想定):

(私たちは辞書である変数dを持っていると仮定します。)

new_d = {(k[0], v) for k, v in d.iteritems()}

print new_d =>

{('Alabama', 353089.0), ('Alabama', 415395.0), ('Alabama', 660367.0), ('Alaska', 298695.0)} ...

これは実際にはセットです。

関連する問題