Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python Pandas: เพิ่ม Prefix ให้ชื่อคอลัมน์ทั้งหมดด้วย add_prefix()

บทนำ

เมธอด 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() สำหรับการเปลี่ยนชื่อซับซ้อนกว่า