如何在列上应用函数[重复]
Posted
技术标签:
【中文标题】如何在列上应用函数[重复]【英文标题】:How to apply a function on a column [duplicate] 【发布时间】:2019-11-09 05:05:25 【问题描述】:我写了一个函数来确定工作日。当我尝试将其应用于我的数据框时,会遇到以下错误。
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() 得到了一个意外的关键字参数“轴”
【问题讨论】:
data['date'].apply(weekday_determination)
为我工作,没有 axis=1
我们没有任何名为“日期”的索引,这怎么可能?另外,我需要申请整个专栏,这就是为什么我添加'axis = 1'
【参考方案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)
【讨论】:
以上是关于如何在列上应用函数[重复]的主要内容,如果未能解决你的问题,请参考以下文章