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

การสร้าง Column ใหม่ใน DataFrame จาก Column ที่มีอยู่แล้วใน Pandas

สามารถสร้าง Column ใหม่ใน DataFrame ได้โดยการคำนวณจาก Column เดิม (Arithmetic, Logic, Functions) ผลลัพธ์จะ Align ตาม Index อัตโนมัติ

ตัวอย่างโค้ด


import pandas as pd
import numpy as np

my_data = {
    'ab': pd.Series([1, 8, 7], index=['a', 'b', 'c']),
    'cd': pd.Series([1, 2, 0, 9], index=['a', 'b', 'c', 'd']),
    'ef': pd.Series([56, 78, 32], index=['a', 'b', 'c'])
}

my_df = pd.DataFrame(my_data)
print("The dataframe is:")
print(my_df)

# สร้าง Column 'gh' = 'ab' + 'ef'
my_df['gh'] = my_df['ab'] + my_df['ef']

print("\nAfter adding column 'gh' (ab + ef):")
print(my_df)

ผลลัพธ์


The dataframe is:
    ab  cd   ef
a  1.0   1  56.0
b  8.0   2  78.0
c  7.0   0  32.0
d  NaN   9   NaN

After adding column 'gh' (ab + ef):
    ab  cd   ef   gh
a  1.0   1  56.0  57.0
b  8.0   2  78.0  86.0
c  7.0   0  32.0  39.0
d  NaN   9   NaN   NaN

คำอธิบาย

  • สร้าง DataFrame จาก Dictionary of Series (Index ไม่เท่ากัน ทำให้มี NaN)

  • my_df['gh'] = my_df['ab'] + my_df['ef'] - บวก Column 'ab' และ 'ef' Element-wise

  • Pandas Align ตาม Index: Index 'a','b','c' มีค่าครบ → คำนวณได้, Index 'd' ขาด 'ab'/'ef' → NaN

วิธีสร้าง Column ใหม่หลายแบบ

วิธีตัวอย่างคำอธิบาย
Arithmeticdf['new'] = df['A'] + df['B']+, -, *, /, **, //, %
Functiondf['new'] = np.log(df['A'])NumPy/SciPy UFuncs
Applydf['new'] = df.apply(lambda r: r['A']*r['B'], axis=1)Row-wise Complex Logic
Assigndf = df.assign(new=df['A']+df['B'])Method Chaining (Immutable)
Evaldf.eval('new = A + B')String Expression (เร็วสำหรับใหญ่)
Where/Maskdf['new'] = np.where(df['A']>0, df['B'], 0)Conditional

การจัดการ NaN ในการคำนวณ


# Fill NaN ก่อนคำนวณ
my_df['gh'] = my_df['ab'].fillna(0) + my_df['ef'].fillna(0)

# หรือใช้ fill_value ใน Operator
my_df['gh'] = my_df['ab'].add(my_df['ef'], fill_value=0)

หมายเหตุ: NaN + Number = NaN ต้องจัดการ Missing Values ก่อนหรือใช้ fill_value