如何在列上应用功能

时间:2019-06-27 08:03:10

标签: python-3.x pandas apply

我写了一个确定工作日的函数。当我尝试将其应用于我的数据框时,会遇到以下错误。

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()收到了意外的关键字参数“轴”

1 个答案:

答案 0 :(得分:1)

最好在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)