python - ฉันจะดำเนินการด้านล่างใน python dataframe ได้อย่างไร

Nov 08 2020

ด้านล่างคือ df ของฉัน

df = pd.DataFrame({
                   'Sr. No': [1, 2, 3, 4, 5, 6],
                    'val1' : [2,3,2,4,1,2],

})

ฉันต้องการเอาท์พุท val2 ดังแสดงในรูปด้านล่าง row1 เหมือนกับ row1 ของ val1 แต่ row2 และด้านล่างคำนวณโดยใช้สูตรดังที่แสดง

คำตอบ

1 mlang Nov 08 2020 at 12:34

ดังนั้นแถวทั้งหมดจะขึ้นอยู่กับก่อนหน้าเนื่องจาก C4 ขึ้นอยู่กับการคำนวณของ C3 เช่น ดังนั้นสิ่งที่เราทำได้คือดำเนินการกับอาร์เรย์ numpy โดยตรง

sr_no_vals = df['Sr. No'].values
val1_vals = df['val1'].values
val2_vals = [val1_vals[0]]

for i in range(1, len(sr_no_vals)):
    calculated_value = (((1 + val2_vals[i - 1]) ** sr_no_vals[i - 1]) * (1 + val1_vals[i])) ** (1 / sr_no_vals[i]) 
    val2_vals.append(calculated_value)

df['val2'] = val2_vals

เมื่อใช้งานกับอาร์เรย์ numpy เรายังสามารถใช้คอมไพเลอร์แบบทันเวลาเช่น numba เพื่อเร่งความเร็วการดำเนินการโดยใช้ปัจจัยขนาดใหญ่สำหรับข้อมูลขนาดใหญ่

@numba.jit(nopython=True)
def calc_val2(val1_vals, sr_no_vals):
    val2_vals = [val1_vals[0]]
    for i in range(1, len(sr_no_vals)):
        calculated_value = (((1 + val2_vals[i - 1]) ** sr_no_vals[i - 1]) * (1 + val1_vals[i])) ** (1 / sr_no_vals[i]) 
        val2_vals.append(calculated_value)
    return val2_vals

df['val2'] = calc_val2(val1_vals, sr_no_vals)