ฉันต้องการที่จะใช้ฟังก์ชั่นที่กำหนดเองของฉัน (จะใช้บันไดถ้า-อื่น) เหล่านี้หกคอลัมน์ ( ERI_Hispanic
, ERI_AmerInd_AKNatv
, ERI_Asian
, ERI_Black_Afr.Amer
, ERI_HI_PacIsl
, ERI_White
) ในแถวของ dataframe ของฉันในแต่ละ
ฉันลองใช้วิธีการที่แตกต่างจากคำถามอื่น ๆ แต่ก็ยังหาคำตอบที่เหมาะสมสำหรับปัญหาของฉันไม่ได้ สิ่งสำคัญของเรื่องนี้คือถ้าบุคคลนั้นถูกนับว่าเป็นฮิสแปนิกพวกเขาจะไม่สามารถถูกนับเป็นสิ่งอื่นได้ แม้ว่าพวกเขาจะมี "1" ในคอลัมน์เชื้อชาติอื่นพวกเขายังคงถูกนับว่าเป็นฮิสแปนิกไม่ใช่สองเผ่าพันธุ์หรือมากกว่า ในทำนองเดียวกันหากผลรวมของคอลัมน์ ERI ทั้งหมดมากกว่า 1 พวกเขาจะถูกนับเป็นสองเชื้อชาติหรือมากกว่าและไม่สามารถนับได้ว่าเป็นเชื้อชาติที่ไม่ซ้ำกัน (ยกเว้นฮิสแปนิก) หวังว่านี่จะสมเหตุสมผล ความช่วยเหลือใด ๆ จะได้รับการชื่นชมอย่างมาก
มันเกือบจะเหมือนกับการทำลูปผ่านแต่ละแถวและถ้าแต่ละเรคคอร์ดตรงตามเกณฑ์พวกมันจะถูกเพิ่มเข้าไปในรายการเดียวและตัดออกจากต้นฉบับ
จาก dataframe ด้านล่างฉันจำเป็นต้องคำนวณคอลัมน์ใหม่ตามข้อมูลจำเพาะต่อไปนี้ใน SQL:
========================= เกณฑ์การตัดสิน ======================== =======
IF [ERI_Hispanic] = 1 THEN RETURN “Hispanic”
ELSE IF SUM([ERI_AmerInd_AKNatv] + [ERI_Asian] + [ERI_Black_Afr.Amer] + [ERI_HI_PacIsl] + [ERI_White]) > 1 THEN RETURN “Two or More”
ELSE IF [ERI_AmerInd_AKNatv] = 1 THEN RETURN “A/I AK Native”
ELSE IF [ERI_Asian] = 1 THEN RETURN “Asian”
ELSE IF [ERI_Black_Afr.Amer] = 1 THEN RETURN “Black/AA”
ELSE IF [ERI_HI_PacIsl] = 1 THEN RETURN “Haw/Pac Isl.”
ELSE IF [ERI_White] = 1 THEN RETURN “White”
ความคิดเห็น: หากการตั้งค่าสถานะ ERI สำหรับประเทศสเปนเป็นจริง (1) พนักงานจะถูกจัดประเภทเป็น "สเปน"
ความคิดเห็น: หากมีมากกว่า 1 ธง ERI ที่ไม่ใช่ประเทศสเปนเป็นความจริงให้ส่งคืน“ สองคนหรือมากกว่า”
====================== DATAFRAME ===========================
lname fname rno_cd eri_afr_amer eri_asian eri_hawaiian eri_hispanic eri_nat_amer eri_white rno_defined
0 MOST JEFF E 0 0 0 0 0 1 White
1 CRUISE TOM E 0 0 0 1 0 0 White
2 DEPP JOHNNY 0 0 0 0 0 1 Unknown
3 DICAP LEO 0 0 0 0 0 1 Unknown
4 BRANDO MARLON E 0 0 0 0 0 0 White
5 HANKS TOM 0 0 0 0 0 1 Unknown
6 DENIRO ROBERT E 0 1 0 0 0 1 White
7 PACINO AL E 0 0 0 0 0 1 White
8 WILLIAMS ROBIN E 0 0 1 0 0 0 White
9 EASTWOOD CLINT E 0 0 0 0 0 1 White