เชื่อมต่อ DataFrame ในแนวตั้ง

การรวมข้อมูลด้วย pandas

Aaren Stubberfield

Instructor

เชื่อมต่อสองตารางในแนวตั้ง

ตารางสองตารางที่วางซ้อนกันในแนวตั้ง

  • เมธอด .concat() ของ pandas ใช้เชื่อมต่อได้ทั้งแนวตั้งและแนวนอน
    • axis=0 คือแนวตั้ง
การรวมข้อมูลด้วย pandas

การเชื่อมต่อพื้นฐาน

  • ตาราง 3 ตาราง
  • ชื่อคอลัมน์เหมือนกัน
  • ชื่อตัวแปรตาราง:
    • inv_jan (บน)
    • inv_feb (กลาง)
    • inv_mar (ล่าง)
  iid  cid  invoice_date  total
0 1    2    2009-01-01    1.98 
1 2    4    2009-01-02    3.96 
2 3    8    2009-01-03    5.94
  iid  cid  invoice_date  total
0 7    38   2009-02-01    1.98 
1 8    40   2009-02-01    1.98 
2 9    42   2009-02-02    3.96 
  iid  cid  invoice_date  total
0 14   17   2009-03-04    1.98 
1 15   19   2009-03-04    1.98 
2 16   21   2009-03-05    3.96 
การรวมข้อมูลด้วย pandas

การเชื่อมต่อพื้นฐาน

pd.concat([inv_jan, inv_feb, inv_mar])
   iid  cid  invoice_date  total
0  1    2    2009-01-01    1.98 
1  2    4    2009-01-02    3.96 
2  3    8    2009-01-03    5.94 
0  7    38   2009-02-01    1.98 
1  8    40   2009-02-01    1.98 
2  9    42   2009-02-02    3.96 
0  14   17   2009-03-04    1.98 
1  15   19   2009-03-04    1.98 
2  16   21   2009-03-05    3.96
การรวมข้อมูลด้วย pandas

การละเว้น index

pd.concat([inv_jan, inv_feb, inv_mar],
          ignore_index=True)
   iid  cid  invoice_date  total
0  1    2    2009-01-01    1.98 
1  2    4    2009-01-02    3.96 
2  3    8    2009-01-03    5.94 
3  7    38   2009-02-01    1.98 
4  8    40   2009-02-01    1.98 
5  9    42   2009-02-02    3.96 
6  14   17   2009-03-04    1.98 
7  15   19   2009-03-04    1.98 
8  16   21   2009-03-05    3.96
การรวมข้อมูลด้วย pandas

กำหนด label ให้ตารางต้นทาง

pd.concat([inv_jan, inv_feb, inv_mar],
          ignore_index=False, 
          keys=['jan','feb','mar'])
       iid  cid  invoice_date  total
jan 0  1    2    2009-01-01    1.98 
    1  2    4    2009-01-02    3.96 
    2  3    8    2009-01-03    5.94 
feb 0  7    38   2009-02-01    1.98 
    1  8    40   2009-02-01    1.98 
    2  9    42   2009-02-02    3.96 
mar 0  14   17   2009-03-04    1.98 
    1  15   19   2009-03-04    1.98 
    2  16   21   2009-03-05    3.96
การรวมข้อมูลด้วย pandas

เชื่อมต่อตารางที่มีชื่อคอลัมน์ต่างกัน

ตาราง: inv_jan

  iid  cid  invoice_date  total
0 1    2    2009-01-01    1.98 
1 2    4    2009-01-02    3.96 
2 3    8    2009-01-03    5.94

ตาราง: inv_feb

  iid  cid  invoice_date  total  bill_ctry
0 7    38   2009-02-01    1.98   Germany  
1 8    40   2009-02-01    1.98   France   
2 9    42   2009-02-02    3.96   France   
การรวมข้อมูลด้วย pandas

เชื่อมต่อตารางที่มีชื่อคอลัมน์ต่างกัน

pd.concat([inv_jan, inv_feb],
          sort=True)
  bill_ctry  cid  iid  invoice_date  total
0 NaN        2    1    2009-01-01    1.98 
1 NaN        4    2    2009-01-02    3.96 
2 NaN        8    3    2009-01-03    5.94 
0 Germany    38   7    2009-02-01    1.98 
1 France     40   8    2009-02-01    1.98 
2 France     42   9    2009-02-02    3.96
การรวมข้อมูลด้วย pandas

เชื่อมต่อตารางที่มีชื่อคอลัมน์ต่างกัน

pd.concat([inv_jan, inv_feb],
          join='inner')
iid  cid  invoice_date  total
1    2    2009-01-01    1.98 
2    4    2009-01-02    3.96 
3    8    2009-01-03    5.94 
7    38   2009-02-01    1.98 
8    40   2009-02-01    1.98 
9    42   2009-02-02    3.96
การรวมข้อมูลด้วย pandas

มาฝึกกันเถอะ!

การรวมข้อมูลด้วย pandas

Preparing Video For Download...