วิธีใช้ cbind ใน python (เทียบเท่ากับ r)


ฟังก์ชัน cbind ใน R ย่อมาจาก column-bind สามารถใช้เพื่อรวมเฟรมข้อมูลเข้าด้วยกันตามคอลัมน์

เราสามารถใช้ฟังก์ชัน pandas concat() เพื่อทำหน้าที่เทียบเท่าใน Python:

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

ตัวอย่างต่อไปนี้แสดงวิธีใช้ฟังก์ชันนี้ในทางปฏิบัติ

ตัวอย่างที่ 1: ใช้ cbind ใน Python ที่มีค่าดัชนีเท่ากัน

สมมติว่าเรามี DataFrames แพนด้าสองตัวต่อไปนี้:

 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() เพื่อเชื่อมโยง DataFrames ทั้งสองนี้เข้าด้วยกันอย่างรวดเร็วด้วยคอลัมน์:

 #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: การใช้ cbind ใน Python ที่มีค่าดัชนีไม่เท่ากัน

สมมติว่าเรามี DataFrames แพนด้าสองตัวต่อไปนี้:

 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

โปรดทราบว่า DataFrames ทั้งสองมีค่าดัชนีไม่เหมือนกัน

หากเราลองใช้ฟังก์ชัน 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

นี่ไม่ใช่ผลลัพธ์ที่เราต้องการ

เพื่อแก้ไขปัญหานี้ ก่อนอื่นเราต้องรีเซ็ตดัชนีของแต่ละ DataFrame ก่อนที่จะเชื่อมต่อเข้าด้วยกัน:

 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 นี้ตรงกับข้อมูลที่เราได้รับในตัวอย่างก่อนหน้านี้

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการทั่วไปอื่นๆ ใน Python:

วิธีรวม Pandas DataFrames สองตัวบนดัชนี
วิธีผสาน Pandas DataFrames ในหลายคอลัมน์
วิธีทำ VLOOKUP ใน Pandas

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *