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

Python - สร้างคอลัมน์ใหม่ใน Pandas DataFrame จากคอลัมน์เดิม

การสร้างคอลัมน์ใหม่ (New Column) ใน DataFrame โดยคำนวณจากคอลัมน์ที่มีอยู่แล้ว เป็นการดำเนินการพื้นฐานที่ใช้บ่อยที่สุดใน Feature Engineering และ Data Transformation

ขั้นตอนการทำงาน

1. โหลดข้อมูล

import pandas as pd

dataFrame = pd.read_csv(r"C:\Users\amit_\Desktop\SalesRecords.csv")

2. สร้างคอลัมน์ใหม่จากคอลัมน์เดิม

# เพิ่ม 100 เข้าไปใน Reg_Price สร้างคอลัมน์ New_Reg_Price
dataFrame['New_Reg_Price'] = (dataFrame['Reg_Price'] + 100)

โค้ดตัวอย่างสมบูรณ์

import pandas as pd

dataFrame = pd.read_csv(r"C:\Users\amit_\Desktop\SalesRecords.csv")
print("DataFrame:\n", dataFrame)
print("\nRows, Cols:", dataFrame.shape)

# สร้างคอลัมน์ใหม่: เพิ่ม 100 จาก Reg_Price
dataFrame['New_Reg_Price'] = (dataFrame['Reg_Price'] + 100)

print("\nUpdated DataFrame with new column:\n", dataFrame)
print("\n[Updated] Rows, Cols:", dataFrame.shape)

ผลลัพธ์

DataFrame:
        Car Date_of_Purchase  Reg_Price
0      BMW       10/10/2020       1000
1    Lexus       10/12/2020        750
2     Audi       10/17/2020        750
3   Jaguar       10/16/2020       1500
4  Mustang       10/19/2020       1100
5  Lamborghini 10/22/2020       1000

Rows, Cols: (6, 3)

Updated DataFrame with new column:
        Car Date_of_Purchase  Reg_Price  New_Reg_Price
0      BMW       10/10/2020       1000           1100
1    Lexus       10/12/2020        750            850
2     Audi       10/17/2020        750            850
3   Jaguar       10/16/2020       1500           1600
4  Mustang       10/19/2020       1100           1200
5  Lamborghini 10/22/2020       1000           1100

[Updated] Rows, Cols: (6, 4)

รูปแบบการสร้างคอลัมน์ใหม่ที่นิยม

วิธีตัวอย่างคำอธิบาย
Arithmeticdf['new'] = df['a'] + df['b']คำนวณจากคอลัมน์อื่น
Constantdf['new'] = 100ค่าคงที่ทุกแถว
Functiondf['new'] = df['col'].apply(func)ใช้ฟังก์ชัน custom
Vectorizeddf['new'] = np.where(df['a']>0, 'pos', 'neg')เงื่อนไขแบบเวกเตอร์ (เร็ว)
Assigndf = df.assign(new=df['a']*2)Return DataFrame ใหม่ (chainable)

ตัวอย่างขั้นสูง

# 1. ใช้ np.where (vectorized if-else)
import numpy as np
df['Price_Category'] = np.where(df['Reg_Price'] > 1000, 'High', 'Low')

# 2. ใช้ apply กับ lambda
df['Price_Doubled'] = df['Reg_Price'].apply(lambda x: x * 2)

# 3. ใช้ assign ช่วย chain
df = (df
      .assign(Reg_Price_Plus_100 = lambda x: x['Reg_Price'] + 100)
      .assign(Price_Category = lambda x: np.where(x['Reg_Price'] > 1000, 'High', 'Low'))
     )

# 4. สร้างหลายคอลัมน์พร้อมกัน
df[['col1', 'col2']] = df[['a', 'b']] * 2

⚠️ SettingWithCopyWarning

ถ้าได้ warning: A value is trying to be set on a copy of a slice from a DataFrame

  • ใช้ .copy() ตอน slice: df = df_original[condition].copy()
  • หรือใช้ .loc[] เพื่อ assignment ที่ชัดเจน