วิธีแก้ไข: คอลัมน์ซ้อนทับกันแต่ไม่ได้ระบุส่วนต่อท้าย
ข้อผิดพลาดที่คุณอาจพบเมื่อใช้นุ่นคือ:
ValueError : columns overlap but no suffix specified: Index(['column'], dtype='object')
ข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณพยายามรวมเฟรมข้อมูลสองเฟรมที่ใช้ชื่อคอลัมน์ทั่วไปอย่างน้อยหนึ่งชื่อ และไม่มีส่วนต่อท้ายสำหรับเฟรมข้อมูลด้านซ้ายหรือด้านขวาเพื่อแยกความแตกต่างของคอลัมน์ในเฟรมข้อมูลใหม่
มีสองวิธีในการแก้ไขข้อผิดพลาดนี้:
โซลูชันที่ 1: ระบุชื่อส่วนต่อท้าย
df1. join (df2, how = ' left ', lsuffix=' left ', rsuffix=' right ')
โซลูชันที่ 2: ใช้ฟังก์ชันผสานแทน
df1. merge (df2, how = ' left ')
ตัวอย่างต่อไปนี้แสดงวิธีการแก้ไขข้อผิดพลาดนี้ในทางปฏิบัติ
วิธีการทำซ้ำข้อผิดพลาด
สมมติว่าเรากำลังพยายามรวมเฟรมข้อมูลสองเฟรมต่อไปนี้เข้าด้วยกัน:
import pandas as pd #create first data frame df1 = pd. DataFrame ({' player ': ['A', 'B', 'C', 'D', 'E', 'F'], ' points ': [5, 7, 7, 9, 12, 9], ' assists ': [11, 8, 10, 6, 6, 5]}) #create second data frame df2 = pd. DataFrame ({' player ': ['A', 'B', 'C', 'D', 'E', 'F'], ' rebounds ': [4, 4, 6, 9, 13, 16], ' steals ': [2, 2, 1, 4, 3, 2]}) #attempt to perform left join on data frames df1. join (df2, how = ' left ') ValueError : columns overlap but no suffix specified: Index(['player'], dtype='object')
เราได้รับข้อผิดพลาดเนื่องจากเฟรมข้อมูลทั้งสองแชร์คอลัมน์ “ผู้เล่น” แต่ไม่มีการระบุส่วนต่อท้ายสำหรับเฟรมข้อมูลด้านซ้ายหรือด้านขวาเพื่อแยกคอลัมน์ของเฟรมข้อมูลใหม่
วิธีการแก้ไขข้อผิดพลาด
วิธีหนึ่งในการแก้ไขข้อผิดพลาดนี้คือการระบุชื่อส่วนต่อท้ายสำหรับกรอบข้อมูลด้านซ้ายหรือด้านขวา:
#perform left join on data frames with suffix provided df1. join (df2, how = ' left ', lsuffix=' left ', rsuffix=' right ') playerleft points assists playerright rebounds steals 0 A 5 11 A 4 2 1 B 7 8 B 4 2 2 C 7 10 C 6 1 3 D 9 6 D 9 4 4 E 12 6 E 13 3 5 F 9 5 F 16 2
อีกวิธีในการแก้ไขข้อผิดพลาดนี้คือเพียงใช้ฟังก์ชัน merge() ซึ่งไม่พบปัญหานี้เมื่อรวมสองเฟรมข้อมูล:
#merge two data frames df1. merge (df2, how = ' left ') player points assists rebounds steals 0 A 5 11 4 2 1 B 7 8 4 2 2 C 7 10 6 1 3 D 9 6 9 4 4 E 12 6 13 3 5 F 9 5 16 2
โปรดทราบว่าฟังก์ชัน ผสาน() จะลบชื่อทั้งหมดออกจากกรอบข้อมูลที่สองที่เป็นของกรอบข้อมูลแรกอยู่แล้ว
แหล่งข้อมูลเพิ่มเติม
วิธีรวม Pandas DataFrames สองตัวบนดัชนี
วิธีผสาน Pandas DataFrames ในหลายคอลัมน์
วิธีเพิ่มอาร์เรย์ Numpy ให้กับ Pandas DataFrame