วิธีแก้ไข: คอลัมน์ซ้อนทับกันแต่ไม่ได้ระบุส่วนต่อท้าย


ข้อผิดพลาดที่คุณอาจพบเมื่อใช้นุ่นคือ:

 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

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

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