ฉันมีปัญหาบางอย่างเกี่ยวกับฟังก์ชั่นการใช้หมีแพนด้าเมื่อใช้หลายคอลัมน์ด้วยดาต้าเฟรมต่อไปนี้
df = DataFrame ({'a' : np.random.randn(6),
'b' : ['foo', 'bar'] * 3,
'c' : np.random.randn(6)})
และฟังก์ชั่นดังต่อไปนี้
def my_test(a, b):
return a % b
เมื่อฉันพยายามใช้ฟังก์ชั่นนี้กับ:
df['Value'] = df.apply(lambda row: my_test(row[a], row[c]), axis=1)
ฉันได้รับข้อความแสดงข้อผิดพลาด:
NameError: ("global name 'a' is not defined", u'occurred at index 0')
ฉันไม่เข้าใจข้อความนี้ฉันกำหนดชื่อไว้อย่างถูกต้อง
ฉันขอขอบคุณสำหรับความช่วยเหลือในเรื่องนี้
ปรับปรุง
ขอบคุณสำหรับความช่วยเหลือของคุณ. ฉันทำผิดพลาดทางไวยากรณ์บางอย่างกับรหัสดัชนีควรจะใส่ '' อย่างไรก็ตามฉันยังคงได้รับปัญหาเดียวกันโดยใช้ฟังก์ชั่นที่ซับซ้อนมากขึ้นเช่น:
def my_test(a):
cum_diff = 0
for ix in df.index():
cum_diff = cum_diff + (a - df['a'][ix])
return cum_diff
my_test(a)
ไม่ทราบว่าเกิดอะไรขึ้นdf
เพราะมันไม่ได้ผ่านการโต้เถียง (เว้นแต่df
ว่าควรจะเป็นโลก คุณต้องส่งค่าทั้งหมดที่คุณต้องการภายในฟังก์ชันเป็นอาร์กิวเมนต์ (ควรเรียงตามลำดับ) มิฉะนั้นฟังก์ชันจะรู้ได้อย่างไรว่าdf
มาจากไหน นอกจากนี้การใช้โปรแกรมในเนมสเปซที่ทิ้งกระจุยกระจายกับตัวแปรทั่วโลกเป็นเรื่องที่ไม่ถูกต้องคุณจะไม่พบข้อผิดพลาดเช่นนี้
apply
มากที่สุด หากคุณไม่แน่ใจว่าคุณต้องใช้มันคุณอาจจะไม่ ฉันแนะนำให้ดูที่เมื่อไหร่ที่ฉันควรจะใช้แพนด้าใช้ในรหัสของฉัน? .