Python で cbind を使用する方法 (r に相当)


R のcbind関数 ( column-bindの略) を使用すると、データ フレームを列ごとに結合できます。

pandas concat()関数を使用して、Python で同等の関数を実行できます。

 df3 = pd. concat ([df1, df2], axis= 1 )

次の例は、この関数を実際に使用する方法を示しています。

例 1: Python で同じインデックス値を使用して cbind を使用する

次の 2 つのパンダ DataFrame があると仮定します。

 import pandas as pd

#define DataFrames
df1 = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E'],
                    ' points ': [99, 91, 104, 88, 108]})

print (df1)

  team points
0 to 99
1 B 91
2 C 104
3 D 88
4 E 108

df2 = pd. DataFrame ({' assists ': ['A', 'B', 'C', 'D', 'E'],
                    ' rebounds ': [22, 19, 25, 33, 29]})

print (df2)

  rebound assists
0 to 22
1 B 19
2 C 25
3 D 33
4 E 29

concat()関数を使用すると、これら 2 つの DataFrame を列ごとにすばやくリンクできます。

 #column-bind two DataFrames into new DataFrame
df3 = pd. concat ([df1, df2], axis= 1 )

#view resulting DataFrame
df3

	team points assists rebounds
0 to 99 to 22
1 B 91 B 19
2 C 104 C 25
3 D 88 D 33
4 E 108 E 29

例 2: 不等なインデックス値を使用した Python での cbind の使用

次の 2 つのパンダ DataFrame があると仮定します。

 import pandas as pd

#define DataFrames
df1 = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E'],
                    ' points ': [99, 91, 104, 88, 108]})

print (df1)

  team points
0 to 99
1 B 91
2 C 104
3 D 88
4 E 108

df2 = pd. DataFrame ({' assists ': ['A', 'B', 'C', 'D', 'E'],
                    ' rebounds ': [22, 19, 25, 33, 29]})

df2. index = [6, 7, 8, 9, 10]

print (df2)

   rebound assists
6 to 22
7 B 19
8 C 25
9 D 33
10 E 29

2 つの DataFrame は同じインデックス値を持たないことに注意してください。

concat()関数を使用してそれらをリンクしようとすると、次の結果が得られます。

 #attempt to column-bind two DataFrames
df3 = pd. concat ([df1, df2], axis= 1 )

#view resulting DataFrame
df3

	team points assists rebounds
0 to 99.0 NaN NaN
1 B 91.0 NaN NaN
2 C 104.0 NaN NaN
3 D 88.0 NaN NaN
4 E 108.0 NaN NaN
6 NaN NaN A 22.0
7 NaN NaN B 19.0
8 NaN NaN C 25.0
9 NaN NaN D 33.0
10 NaN NaN E 29.0

これは私たちが望んでいた結果ではありません。

この問題を解決するには、まず各データフレームを連結する前に、各データフレームのインデックスをリセットする必要があります。

 import pandas as pd

#define DataFrames
df1 = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E'],
                    ' points ': [99, 91, 104, 88, 108]})

df2 = pd. DataFrame ({' assists ': ['A', 'B', 'C', 'D', 'E'],
                    ' rebounds ': [22, 19, 25, 33, 29]})

df2. index = [6, 7, 8, 9, 10]

#reset index of each DataFrame
df1. reset_index (drop= True , place= True )
df2. reset_index (drop= True , place= True )

#column-bind two DataFrames
df3 = pd. concat ([df1, df2], axis= 1 )

#view resulting DataFrame
df3

	team points assists rebounds
0 to 99 to 22
1 B 91 B 19
2 C 104 C 25
3 D 88 D 33
4 E 108 E 29

この DataFrame は、前の例で取得した DataFrame と一致することに注意してください。

追加リソース

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

インデックス上の 2 つの Pandas DataFrame をマージする方法
複数の列にまたがる Pandas DataFrame をマージする方法
Pandas で VLOOKUP を実行する方法

コメントを追加する

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