【发布时间】:2017-12-03 14:09:28
【问题描述】:
我正在尝试根据 page 之后的数据框中的现有列添加列。
由于if case比较多,我将if case定义为函数(getDirection方法),并尝试通过apply方法(addDirection方法)调用。
但是,我收到以下错误。
TypeError: getDirection() takes 1 positional argument but 2 were given
谁能告诉我如何通过申请数据框来调用函数?
代码如下所示。
def addDirection(self):
group=self.group
group['direction']=group['Azimuth [deg]'].apply(self.getDirection)
def getDirection(angle):
if angle < 11.25 or angle >= 348.75:
return "N"
elif angle < 33.75 and angle >= 11.25:
return "NNE"
elif angle < 56.25 and angle >= 33.75:
return "NE"
elif angle < 78.75 and angle >= 56.25:
return "ENE"
elif angle < 101.25 and angle >= 78.75:
return "E"
elif angle < 123.75 and angle >= 101.25:
return "ESE"
elif angle < 146.25 and angle >= 123.75:
return "SE"
elif angle < 168.75 and angle >= 146.25:
return "SSE"
elif angle < 191.25 and angle >= 168.75:
return "S"
elif angle < 213.75 and angle >= 191.25:
return "SSW"
elif angle < 236.25 and angle >= 213.75:
return "SW"
elif angle < 258.75 and angle >= 236.25:
return "WSW"
elif angle < 281.25 and angle >= 258.75:
return "W"
elif angle < 303.75 and angle >= 281.25:
return "WNW"
elif angle < 326.25 and angle >= 303.75:
return "NW"
elif angle < 348.75 and angle >= 326.25:
return "NNW"
【问题讨论】:
-
你是怎么
applygetDirection()方法的? -
getDirection似乎是某个类中的方法,而不是常规函数。 -
@akilat90 参考这个page,我想下面的脚本正在将 getDirection() 方法应用于数据帧。 'group['direction']=group['Azimuth [deg]'].apply(self.getDirection)'
-
这更简洁地实现为
list查找:return ["N", "NNE", "NE, "ENE", ...][int((angle*100)//1125]。 -
你如何调用 addDirection?