我编写了一个函数来确定工作日。当我尝试将其应用到我的数据框时,遇到以下错误。
data['date'].head()
0 2016-01-01
1 2016-01-01
2 2016-01-01
3 2016-01-01
4 2016-01-01
def weekday_determination(col):
year, month, day = (int(x) for x in col.split('-'))
ans = datetime.date(year, month, day)
return ans.strftime('%A')
data['week_day'] = data['date'].apply(weekday_determination, axis=1)
我遇到以下错误:
TypeError: weekday_determination() got an unexpected keyword argument 'axis'
最佳答案
这里更好用to_datetime
与 Series.dt.day_name
:
data['week_day'] = pd.to_datetime(data['date']).dt.day_name()
print (data)
date week_day
0 2016-01-01 Friday
1 2016-01-01 Friday
2 2016-01-01 Friday
3 2016-01-01 Friday
4 2016-01-01 Friday
在您的解决方案中使用 Series.apply
,所以没有参数axis
:
data['date'] = data['date'].apply(weekday_determination)
可能的解决方案为 DataFrame.apply
:
data['week_day'] = data.apply(lambda x: weekday_determination(x['date']), axis=1)
关于python-3.x - 如何在列上应用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56786572/