ホームページ  >  記事  >  バックエンド開発  >  Pandas の concat 関数の引数「levels」、「keys」、および「names」はどのように機能して MultiIndex を作成しますか?

Pandas の concat 関数の引数「levels」、「keys」、および「names」はどのように機能して MultiIndex を作成しますか?

DDD
DDDオリジナル
2024-10-31 20:28:29498ブラウズ

How do the 'levels', 'keys', and 'names' arguments in Pandas' concat function work to create a MultiIndex?

Pandas の concat 関数の「レベル」、「キー」、および名前の引数は何ですか?

1.はじめに

pandas.concat() 関数は、指定された軸に沿って複数のシリーズまたはデータフレームを結合するための強力なツールです。レベル、キー、名前などのオプションの引数を多数提供しており、これらを使用して結果の MultiIndex をカスタマイズできます。

2. Levels

levels 引数は、結果として得られる MultiIndex のレベルを指定するために使用されます。デフォルトでは、Pandas はキー引数からレベルを推測します。ただし、シーケンスのリストをレベル引数に渡すことで、推論されたレベルをオーバーライドできます。

たとえば、次のコードは、2 つのレベルの MultiIndex を使用して、行に沿って 2 つの DataFrame を連結します。

<code class="python">df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
df2 = pd.DataFrame({'C': [5, 6], 'D': [7, 8]})

df = pd.concat([df1, df2], keys=['df1', 'df2'], levels=['level1', 'level2'])

print(df)

      level1 level2  A  B  C  D
0    df1     1    1  3  5  7
1    df1     2    2  4  6  8</code>

この例では、レベル引数は 2 つのシーケンス ['level1', 'level2'] のリストです。これにより、「level1」と「level2」の 2 つのレベルを持つ MultiIndex が作成されます。 key 引数は、2 つの文字列 ['df1', 'df2'] のリストです。これにより、値「df1」と「df2」がそれぞれ MultiIndex の第 1 レベルと第 2 レベルに割り当てられます。

3. Keys

keys 引数は、結果として得られる MultiIndex のキーを指定するために使用されます。デフォルトでは、Pandas は入力オブジェクトのインデックス ラベルをキーとして使用します。ただし、keys 引数に値のリストを渡すことで、デフォルトのキーをオーバーライドできます。

たとえば、次のコードは、3 つのレベルの MultiIndex を使用して、行に沿って 2 つの DataFrame を連結します。

<code class="python">df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
df2 = pd.DataFrame({'C': [5, 6], 'D': [7, 8]})

df = pd.concat([df1, df2], keys=[('A', 'B'), ('C', 'D')])

print(df)

    level1 level2  A  B  C  D
0     A      B    1  3  5  7
1     C      D    2  4  6  8</code>

この例では、keys 引数は 2 つのタプルのリストです: [('A', 'B'), ('C', 'D')]。これにより、「level1」、「level2」、「level3」の 3 つのレベルを持つ MultiIndex が作成されます。 Keys 引数は、値 'A' と 'B' を MultiIndex の最初のレベルに割り当て、値 'C' と 'D' を MultiIndex の 2 番目のレベルに割り当てます。

4. Names

names 引数は、結果として得られる MultiIndex のレベルの名前を指定するために使用されます。デフォルトでは、Pandas は入力オブジェクトのインデックス ラベルの名前をレベルの名前として使用します。ただし、文字列のリストを names 引数に渡すことで、デフォルトの名前をオーバーライドできます。

たとえば、次のコードは、2 つのレベルの MultiIndex を使用して、行に沿って 2 つの DataFrame を連結します。

<code class="python">df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
df2 = pd.DataFrame({'C': [5, 6], 'D': [7, 8]})

df = pd.concat([df1, df2], keys=['df1', 'df2'], names=['level1', 'level2'])

print(df)

      level1 level2  A  B  C  D
0    df1     1    1  3  5  7
1    df1     2    2  4  6  8</code>

この例では、names 引数は 2 つの文字列のリストです: ['level1', 'level2']。これにより、MultiIndex の最初のレベルと 2 番目のレベルに、それぞれ「level1」と「level2」という名前が割り当てられます。

以上がPandas の concat 関数の引数「levels」、「keys」、および「names」はどのように機能して MultiIndex を作成しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。