Python 使用apply return error基于2列创建新列
我需要根据dataframe中的2列创建新列 这是数据帧的头部Python 使用apply return error基于2列创建新列,python,pandas,Python,Pandas,我需要根据dataframe中的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
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'
然后使用“应用”创建新列:
df['new_col'] = df.apply(H, axis=1)
它返回一个错误:
AttributeError: ("'str' object has no attribute 'isin'", 'occurred at index 0')
我需要使用apply或任何其他方法创建新列,但我更喜欢先创建一个函数,然后使用apply
df.col_2
类型为string
非系列def H(d):
if d['col_1'] == -0.5 and d['col_2'] in {'H1', 'H2', 'H3', 'H4', 'H5+'}:
return 'W -0.5'
elif d['col_1'] == -0.5 and d['col_2'] in {'A1', 'A2', 'A3', 'A4', 'A5+', 'draw'}:
return 'L -0.5'
...