好的,执行此步骤有两个步骤-首先是编写一个可以执行所需翻译的函数-我已根据你的伪代码将一个示例放在一起:
def label_race (row): if row['eri_hispanic'] == 1 : return 'Hispanic' if row['eri_afr_amer'] + row['eri_asian'] + row['eri_hawaiian'] + row['eri_nat_amer'] + row['eri_white'] > 1 : return 'Two Or More' if row['eri_nat_amer'] == 1 : return 'A/I AK Native' if row['eri_asian'] == 1: return 'Asian' if row['eri_afr_amer'] == 1: return 'Black/AA' if row['eri_hawaiian'] == 1: return 'Haw/Pac Isl.' if row['eri_white'] == 1: return 'White' return 'Other'
你可能想要解决这个问题,但这似乎可以解决问题-请注意,进入函数的参数被认为是一个标有“行”的
Series对象。
接下来,在熊猫中使用apply函数来应用该函数-例如
df.apply (lambda row: label_race(row), axis=1)
请注意axis = 1说明符,这意味着应用程序是在行而不是列级别完成的。结果在这里:
0White1 Hispanic2White3White4Other5White6 Two Or More7White8 Haw/Pac Isl.9White
如果你对这些结果感到满意,请再次运行它,将结果保存到原始数据框中的新列中。
df['race_label'] = df.apply (lambda row: label_race(row), axis=1)
结果数据框如下所示(向右滚动以查看新列):
lname fname rno_cd eri_afr_amer eri_asian eri_hawaiian eri_hispanic eri_nat_amer eri_white rno_defined race_label0 MOST JEFF E 0 0 0 0 0 1 White White1 CRUISE TOM E 0 0 0 1 0 0 White Hispanic2 DEPP JOHNNY NaN 0 0 0 0 0 1 Unknown White3 DICAP LEO NaN 0 0 0 0 0 1 Unknown White4 BRANDO MARLON E 0 0 0 0 0 0 White Other5 HANKS TOM NaN 0 0 0 0 0 1 Unknown White6 DENIRO ROBERT E 0 1 0 0 0 1 White Two Or More7 PACINO AL E 0 0 0 0 0 1 White White8 WILLIAMS ROBIN E 0 0 1 0 0 0 White Haw/Pac Isl.9 EASTWOOD CLINT E 0 0 0 0 0 1 White White



