Pandas: วิธีรวมค่าจากหลายคอลัมน์ให้เป็นหนึ่งเดียว
คุณสามารถใช้วิธีต่อไปนี้เพื่อจัดกลุ่มค่าจากหลายคอลัมน์ของ Pandas DataFrame ให้เป็นคอลัมน์เดียว:
วิธีที่ 1: รวมค่าตามลำดับคอลัมน์เริ่มต้น
df[' coalesce '] = df. bfill (axis= 1 ). iloc [:, 0]
วิธีที่ 2: รวมค่าโดยใช้ลำดับคอลัมน์เฉพาะ
df[' coalesce '] = df[[' col3 ', ' col1 ', ' col2 ']]. bfill (axis= 1 ). iloc [:, 0]
ตัวอย่างต่อไปนี้แสดงวิธีการใช้แต่ละวิธีในทางปฏิบัติกับ Pandas DataFrame ต่อไปนี้:
import pandas as pd import numpy as np #createDataFrame df = pd. DataFrame ({' points ': [np.nan, np.nan, 19, np.nan, 14], ' assists ': [np.nan, 7, 7, 9, np.nan], ' rebounds ': [3, 4, np.nan, np.nan, 6]}) #view DataFrame print (df) points assists rebounds 0 NaN NaN 3.0 1 NaN 7.0 4.0 2 19.0 7.0 NaN 3 NaN 9.0 NaN 4 14.0 NaN 6.0
วิธีที่ 1: รวมค่าตามลำดับคอลัมน์เริ่มต้น
รหัสต่อไปนี้แสดงวิธีการผสานค่าจากคอลัมน์จุด ช่วยเหลือ และรีบาวด์ให้เป็นคอลัมน์เดียว โดยใช้ค่าแรกที่ไม่ใช่ศูนย์ในสามคอลัมน์เป็นค่าที่ผสาน:
#create new column that contains first non-null value from three existing columns
df[' coalesce '] = df. bfill (axis= 1 ). iloc [:, 0]
#view updated DataFrame
print (df)
points assists rebounds coalesce
0 NaN NaN 3.0 3.0
1 NaN 7.0 4.0 7.0
2 19.0 7.0 NaN 19.0
3 NaN 9.0 NaN 9.0
4 14.0 NaN 6.0 14.0
นี่คือวิธีการเลือกค่าในคอลัมน์ ผสาน :
- บรรทัดแรก: ค่าแรกที่ไม่ใช่ศูนย์คือ 3.0
- บรรทัดที่สอง: ค่าแรกที่ไม่ใช่ศูนย์คือ 7.0
- บรรทัดที่สาม: ค่าแรกที่ไม่ใช่ศูนย์คือ 19.0
- บรรทัดที่สี่: ค่าแรกที่ไม่ใช่ศูนย์คือ 9.0
- บรรทัดที่ห้า: ค่าแรกที่ไม่ใช่ศูนย์คือ 14.0
วิธีที่ 2: รวมค่าโดยใช้ลำดับคอลัมน์เฉพาะ
รหัสต่อไปนี้แสดงวิธีการผสานค่าในสามคอลัมน์โดยการวิเคราะห์คอลัมน์ตามลำดับต่อไปนี้: Assists, Rebounds, Points
#coalesce values in specific column order
df[' coalesce '] = df[[' assists ', ' rebounds ', ' points ']]. bfill (axis= 1 ). iloc [:, 0]
#view updated DataFrame
print (df)
points assists rebounds coalesce
0 NaN NaN 3.0 3.0
1 NaN 7.0 4.0 7.0
2 19.0 7.0 NaN 7.0
3 NaN 9.0 NaN 9.0
4 14.0 NaN 6.0 6.0
ต่อไปนี้คือตรรกะที่ใช้ในการตัดสินใจว่าจะวางค่าใดในคอลัมน์ ผสาน :
- หากค่าในคอลัมน์ ตัวช่วย ไม่เป็นศูนย์ ให้ใช้ค่านั้น
- มิฉะนั้น หากค่าในคอลัมน์ ตีกลับ ไม่เป็นศูนย์ ให้ใช้ค่านั้น
- มิฉะนั้น หากค่าในคอลัมน์ คะแนน ไม่เป็นศูนย์ ให้ใช้ค่านั้น
หมายเหตุ : คุณสามารถดูเอกสารฉบับเต็มสำหรับฟังก์ชัน bfill() ได้ที่นี่
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการทั่วไปอื่น ๆ ในแพนด้า:
วิธีรวมสองคอลัมน์ใน Pandas
วิธีรวมคอลัมน์เฉพาะใน Pandas
วิธีจัดเรียงตามหลายคอลัมน์ใน Pandas