如何在列上应用函数[重复]

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_datetimeSeries.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)

【讨论】:

以上是关于如何在列上应用函数[重复]的主要内容,如果未能解决你的问题,请参考以下文章

pyspark 在列上应用函数

在列上使用 SetOrdinal() 后如何更新 DataGridView

SQL在列上加入LIKE另一列[重复]

Flexbox:如何在列上组合百分比、像素和剩余高度?

如何强制 Kendo Grid 在列上使用数字过滤器

如何获得 PostgreSQL 中的两个平均值之间的差异,平均值在列上,最终表按两列分组?