บทนำ
เมธอด add_prefix() ของ DataFrame เพิ่มคำนำหน้า (prefix) ให้ทุกชื่อคอลัมน์พร้อมกัน คืน DataFrame ใหม่ (ไม่แก้ไข inplace)
ตัวอย่างโค้ด
import pandas as pd
df = pd.DataFrame({
"Car": ['BMW', 'Lexus', 'Tesla', 'Mustang', 'Mercedes', 'Jaguar'],
"Cubic_Capacity": [2000, 1800, 1500, 2500, 2200, 3000],
"Reg_Price": [7000, 1500, 5000, 8000, 9000, 6000],
"Units_Sold": [100, 120, 150, 110, 200, 250]
})
print("DataFrame ต้นทาง:")
print(df)
# เพิ่ม prefix 'column_' ให้ทุกคอลัมน์
df_prefixed = df.add_prefix('column_')
print("\nDataFrame หลัง add_prefix('column_'):")
print(df_prefixed)
ผลลัพธ์
DataFrame ต้นทาง:
Car Cubic_Capacity Reg_Price Units_Sold
0 BMW 2000 7000 100
1 Lexus 1800 1500 120
2 Tesla 1500 5000 150
3 Mustang 2500 8000 110
4 Mercedes 2200 9000 200
5 Jaguar 3000 6000 250
DataFrame หลัง add_prefix('column_'):
column_Car column_Cubic_Capacity column_Reg_Price column_Units_Sold
0 BMW 2000 7000 100
1 Lexus 1800 1500 120
2 Tesla 1500 5000 150
3 Mustang 2500 8000 110
4 Mercedes 2200 9000 200
5 Jaguar 3000 6000 250
คู่คู่: add_suffix()
# เพิ่ม suffix (คำต่อท้าย)
df_suffixed = df.add_suffix('_col')
print(df_suffixed.columns.tolist())
# ['Car_col', 'Cubic_Capacity_col', 'Reg_Price_col', 'Units_Sold_col']
การใช้งานร่วมกับ pipe()
# Method chaining
result = (df
.add_prefix('feature_')
.rename(columns={'feature_Car': 'feature_car_name'})
.filter(like='feature_')
)
กรณีใช้งานจริง
- Feature engineering:
df.add_prefix('feat_') - Merge หลาย DataFrame: กันชื่อคอลัมน์ชนกัน
df1.add_prefix('left_'), df2.add_prefix('right_') - Namespace separation:
train_df.add_prefix('train_'), test_df.add_prefix('test_')
ข้อควรระวัง
- คืน DataFrame ใหม่ - ไม่แก้ไข inplace (ไม่มีพารามิเตอร์ inplace)
- ใช้กับ columns เท่านั้น - สำหรับ index ใช้
df.rename(index=...) - Prefix เป็น string - ตัวเลขจะแปลงเป็น string อัตโนมัติ
วิธีทางเลือก: Rename ด้วย Lambda
# เพิ่ม prefix ด้วย rename (ยืดหยุ่นกว่า)
df.rename(columns=lambda x: f'prefix_{x}')
# เปลี่ยนชื่อแบบซับซ้อน
df.rename(columns=lambda x: x.lower().replace(' ', '_').replace('_', ''))
สรุป
df.add_prefix('prefix_') เพิ่มคำนำหน้าให้ทุกคอลัมน์ได้อย่างกระชับ คู่กับ add_suffix('_suffix') สำหรับคำต่อท้าย ใช้ร่วมกับ rename() สำหรับการเปลี่ยนชื่อซับซ้อนกว่า