2017-10-02 4 views
0

私は2つの無名のSeriesを連結したいと思います(私はその場でそれらを作成していますので、彼らは無名のだ。)この時pd.concatの「名前」 'キーのキーワード対

私の最初の試みは、通りでした次の:

In [41]: pd.concat([pd.Series([1,2,3]), pd.Series([4,5,6])], 
     : names=['foo', 'bar'], axis=1) 
Out[41]: 
    0 1 
0 1 4 
1 2 5 
2 3 6 

私は、これはドキュメントを仕事と読んでいないことに驚きました。

名:リスト、デフォルトなし

結果の階層的インデックスのレベルの名前

これは私にとってそれほど意味がありません。

私はあまり直感的keysキーワードを試みたが、これは私がnamesが何だろうと思った何をした:

In [46]: pd.concat([pd.Series([1,2,3]), pd.Series([4,5,6])], 
     : keys=['foo', 'bar'], axis=1) 
Out[46]: 
    foo bar 
0 1 4 
1 2 5 
2 3 6 

ここで何が起こっていますか?なぜ私の列名はキーワードnamesではなくkeysと指定されていますか?

+2

あなたの質問に対する具体的な答えはわかりませんが、オンザフライ作成時に名前を指定して、期待どおりに動作することを知っています。 pd.Series([4,5,6]、name = 'bar')]、軸= 1) ' – Uvar

+0

@Uvar([pd.Series([1,2,3]、name = 'foo'本当に便利です。はい、これは本当に私がこの質問をする必要性を取り除きます! (あなたが言うように、答えません!) – LondonRob

+0

連結によって階層索引が生成される場合、軸にはそれらの名前が割り当てられます。それ以外の場合は無視されます。 –

答えて

1

Names - 名前オプションで作成したインデックスキーにラベルを付けます。これにより、階層索引付けレベルまたは複数索引レベルに名前が付けられます。レベルが複数の場合、名前が実装されます。そうでない場合、それらは無視されます。

Keys - keysオプションを使用してデータの最も外側のレベルに階層インデックスを追加します。あなたがシリーズを渡すとき、インデックスはキーの助けを借りて設定されます。 (多くはset indexのように)。連結後、それらはDataframeに変換されるので、シリーズインデックスはあなたのケースでは列名として設定されます。

axis =1を使用せずに両方を渡すと、ヘラキアルインデックスのラベル付けとヘリカルインデックスの平均の追加が確認できます。

pd.concat([pd.Series([1,2,3]), pd.Series([4,5,6])], keys=['foo', 'bar'], names=['Nice', 'TOO']) 
 
Nice TOO 
foo 0  1 
     1  2 
     2  3 
bar 0  4 
     1  5 
     2  6 
dtype: int64 

あなたが見ることができるようなレベルは、インデックスがキーパラメータで設定されているのような名前のパラメータによって命名されています。

関連する問題