2016-12-18 3 views
0

パンダの複数の行に1つのユニークなインデックスを付けることはできますか? 例:それはユニークではないのでパンダの複数の行に1つのユニークなインデックスを付けることはできますか?

index country value 
1 NL 'hi' 
2 NL 'wet' 
3 SWE '4' 
4 SWE 'maybe' 

ので、この例では、私は、インデックスとしてNLを設定することはできません。パンダのインデックスに複数の行を入れることはできないのですか?

+1

まあ、それは、その場合にはユニークでなければなりません。 – kabanus

+0

pandasでは、インデックス内の値が一意である必要はないので、インデックスとしてカントリーカラムを設定できます(これは必ずしもそうとは限りません)。しかし、おそらくあなたは[マルチインデックス](http://pandas.pydata.org/pandas-docs/stable/advanced.html#multiindex-advanced-indexing)を探しているようです。 –

答えて

0

パンダのインデックスとして、必ずcountryの列を設定することができます。インデックスは一意である必要はありません。次に、すべての行をNLの値に置き換えて、.loc演算子を使用できます。

df = df.set_index('country') 
df.loc['NL'] 

以下のコメントは、元のデータフレーム(設定インデックスなし)で最初にお試しください。

df.groupby('country')['value'].apply(list).to_json()) 

出力

{"NL":["'hi'","'wet'"],"SWE":["'4'","'maybe'"]} 
+0

さて、私はなぜこれをやりたかったのか再び覚えています。したがって、インデックスの設定はまったく問題ありません。しかし、orient = 'index'を使用してJSONに変換したい場合は、このエラーが発生します。 – WirAre

+0

ValueError:DataFrameインデックスはorient = 'index'に対して一意である必要があります。 – WirAre

+0

上記の編集された答えを見たいとは思っていません。 –

関連する問題