วิธีผสานหลาย dataframes ใน pandas (พร้อมตัวอย่าง)


คุณสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อรวม DataFrames หลายรายการพร้อมกันในแพนด้า:

 import pandas as pd
from functools import reduce

#define list of DataFrames
dfs = [df1, df2, df3]

#merge all DataFrames into one
final_df = reduce(lambda left,right: pd.merge (left,right,on=[' column_name '],
                                            how=' outer '), dfs)

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

ตัวอย่าง: รวม DataFrames หลายอันใน Pandas

สมมติว่าเรามี DataFrames แพนด้าสามตัวต่อไปนี้ซึ่งมีข้อมูลเกี่ยวกับผู้เล่นบาสเกตบอลจากทีมต่างๆ:

 import pandas as pd

#createDataFrames
df1 = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D'],
                    ' points ': [18, 22, 19, 14]})

df2 = pd. DataFrame ({' team ': ['A', 'B', 'C'],
                    ' assists ': [4, 9, 14]})

df3 = pd. DataFrame ({' team ': ['C', 'D', 'E', 'F'],
                    ' rebounds ': [10, 17, 11, 10]})

#view DataFrames
print (df1)

  team points
0 to 18
1 B 22
2 C 19
3 D 14

print (df2)

  team assists
0 to 4
1 B 9
2 C 14

print (df3)

  team rebounds
0 C 10
1 D 17
2 E 11
3 F 10

เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อรวม DataFrames ทั้งสามให้เป็นหนึ่งเดียว:

 from functools import reduce

#define list of DataFrames
dfs = [df1, df2, df3]

#merge all DataFrames into one
final_df = reduce(lambda left,right: pd.merge (left,right,on=[' team '],
                                            how=' outer '), dfs)

#view merged DataFrame
print (final_df)

  team points assists rebounds
0 A 18.0 4.0 NaN
1 B 22.0 9.0 NaN
2 C 19.0 14.0 10.0
3 D 14.0 NaN 17.0
4 E NaN NaN 11.0
5 F NaN NaN 10.0

ผลลัพธ์ที่ได้คือ DataFrame ที่มีข้อมูลจาก DataFrames ทั้งสามตัว

โปรดทราบว่าค่า NaN ใช้เพื่อเติมเซลล์ว่างใน DataFrame สุดท้าย

หากต้องการใช้ค่าอื่นที่ไม่ใช่ NaN เพื่อเติมเซลล์ว่าง คุณสามารถใช้ฟังก์ชัน fillna() ได้:

 from functools import reduce

#define list of DataFrames
dfs = [df1, df2, df3]

#merge all DataFrames into one
final_df = reduce(lambda left,right: pd.merge (left,right,on=[' team '],
                                            how=' outer '), dfs). fillna (' none ')

#view merged DataFrame
print (final_df)

  team points assists rebounds
0 A 18.0 4.0 none
1 B 22.0 9.0 none
2 C 19.0 14.0 10.0
3 D 14.0 none 17.0
4 E none none 11.0
5 F none none 10.0

ตอนนี้แต่ละเซลล์ว่างจะเต็มไปด้วย ” ไม่มี ” แทน NaN

หมายเหตุ : คุณสามารถดูเอกสารฉบับเต็มของฟังก์ชัน ผสาน ในแพนด้า ได้ที่นี่

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

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

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

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

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