複数の pandas dataframe をスタックする方法


多くの場合、2 つ以上の pandas DataFrame をスタックしたい場合があります。幸いなことに、これは pandas concat()関数を使用して簡単に行うことができます。

このチュートリアルでは、これを行う方法の例をいくつか示します。

例 1: 2 つの Pandas DataFrame をスタックする

次のコードは、2 つのパンダ DataFrame を相互に「スタック」して DataFrame を作成する方法を示しています。

 import pandas as pd

#create two DataFrames
df1 = pd.DataFrame({'player': ['A', 'B', 'C', 'D', 'E'],
                    'points':[12, 5, 13, 17, 27]})

df2 = pd.DataFrame({'player': ['F', 'G', 'H', 'I', 'J'],
                    'points':[24, 26, 27, 27, 12]})

#"stack" the two DataFrames together
df3 = pd. concat ([df1,df2], ignore_index= True )

#view resulting DataFrame
df3

	player points
0 to 12
1 B 5
2 C 13
3 D 17
4 E 27
5 F 24
6 G 26
7:27 a.m.
8 I 27
9 D 12

例 2: 3 つの Pandas DataFrame をスタックする

同様のコードを使用して、3 つのパンダ DataFrame を互いに積み重ねて DataFrame を作成できます。

 import pandas as pd

#create three DataFrames
df1 = pd.DataFrame({'player': ['A', 'B', 'C', 'D', 'E'],
                    'points':[12, 5, 13, 17, 27]})

df2 = pd.DataFrame({'player': ['F', 'G', 'H', 'I', 'J'],
                    'points':[24, 26, 27, 27, 12]})

df3 = pd.DataFrame({'player': ['K', 'L', 'M', 'N', 'O'],
                    'points':[9, 5, 5, 13, 17]})

#"stack" the two DataFrames together
df4 = pd. concat ([df1,df2, df3], ignore_index= True )

#view resulting DataFrame
df4

        player points
0 to 12
1 B 5
2 C 13
3 D 17
4 E 27
5 F 24
6 G 26
7:27 a.m.
8 I 27
9 D 12
10K 9
11 L 5
12 M 5
13 N 13
14 O 17

ignore_index の重要性

前の例では、 ignore_index=Trueを使用したことに注意してください。

これは、パンダに各 DataFrame のインデックス番号を無視し、新しい DataFrame に対して 0 から n-1 の範囲の新しいインデックスを作成するように指示します。

たとえば、次の 2 つの DataFrame をスタックするときに、 ignore_index=Trueを使用しないとどうなるかを考えてみましょう。

 import pandas as pd

#create two DataFrames with indices
df1 = pd.DataFrame({'player': ['A', 'B', 'C', 'D', 'E'],
                    'points':[12, 5, 13, 17, 27]},
                    index=[0, 1, 2, 3, 4])

df2 = pd.DataFrame({'player': ['F', 'G', 'H', 'I', 'J'],
                    'points':[24, 26, 27, 27, 12]},
                    index=[2, 4, 5, 6, 9])

#stack the two DataFrames together
df3 = pd. concat ([df1,df2])

#view resulting DataFrame
df3

        player points
0 to 12
1 B 5
2 C 13
3 D 17
4 E 27
2 F 24
4G 26
5:27 a.m.
6 I 27
9 D 12

結果の DataFrame は、両方の DataFrame からの元のインデックス値を保持しました。

したがって、元のインデックス値を保持する特別な理由がない限り、2 つの DataFrame をスタックするときは通常、 ignore_index=Trueを使用する必要があります。

追加リソース

次のチュートリアルでは、Pandas で他の一般的なタスクを実行する方法について説明します。

Pandas DataFrame に空の列を追加する方法
Pandas DataFrame に列を挿入する方法
Pandas DataFrame を Excel にエクスポートする方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です