我需要基于 pandas 数据框中的 2 列创建新列这是数据框的头部
col_1 col_2
0 -0.5 H1
1 -0.5 draw
2 -0.5 H3
3 -0.5 H1
4 -1.5 H2
5 -0.5 H1
7 -2.5 H4
8 -0.5 A2
9 -0.5 H1
12 -1.5 draw
13 9.0 draw
14 -0.5 draw
15 -0.5 A1
16 -0.5 H1
17 -0.5 draw
18 9.0 draw
19 -0.5 draw
20 -0.5 H1
21 -0.5 H2
22 -3.5 A1
我创建了函数:
def H(d):
if d['col_1'] == -0.5 & d['col_2'].isin(['H1', 'H2', 'H3', 'H4', 'H5+']):
return 'W -0.5'
elif d['col_1'] == -0.5 & d['col_2'].isin(['A1', 'A2', 'A3', 'A4', 'A5+', 'draw']):
return 'L -0.5'
elif d['col_1'] == -1.5 & d['col_2'].isin(['H2', 'H3', 'H4', 'H5+']):
return 'W -1.5'
elif d['col_1'] == -1.5 & d['col_2'].isin(['A1', 'A2', 'A3', 'A4', 'A5+', 'draw', 'H1']):
return 'L -1.5'
elif d['col_1'] == -2.5 & d['col_2'].isin(['H3', 'H4', 'H5+']):
return 'W -2.5'
elif d['col_1'] == -2.5 & d['col_2'].isin(['A1', 'A2', 'A3', 'A4', 'A5+', 'draw', 'H1', 'H2']):
return 'L -2.5'
elif d['col_1'] == -3.5 & d['col_2'].isin(['H4', 'H5+']):
return 'W -3.5'
elif d['col_1'] == -3.5 & d['col_2'].isin(['A1', 'A2', 'A3', 'A4', 'A5+', 'draw', 'H1', 'H2', 'H3']):
return 'L -3.5'
else:
return 'und'
然后使用 apply 创建新列:
df['new_col'] = df.apply(H, axis=1)
它返回一个错误:
AttributeError: ("'str' object has no attribute 'isin'", 'occurred at index 0')
我需要使用 apply 或任何其他方法创建新列,但我更喜欢创建一个函数然后使用 apply
临摹微笑
相关分类