[英]apply function to dataframe column
我有数据框 x,
我们想使用下面的 function 创建新列,这将在开始时添加完整列值并创建新列完成。
import datetime
def date_by_adding_business_days(from_date, add_days):
business_days_to_add = add_days
current_date = from_date
while business_days_to_add > 0:
current_date += datetime.timedelta(days=1)
weekday = current_date.weekday()
if weekday >= 5: # sunday = 6
continue
business_days_to_add -= 1
return current_date
我试过这个低于错误,请帮助。
x['Finish'] = x.apply(date_by_adding_business_days(datetime.date.today(), x['Complete']))
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
尝试重构您的代码。 如果您仅将 function 应用于一列,那么您做错了。 此外,由于某种原因,您尝试调用 function 传递时间给它。 为什么如果你能在 function 中得到它:
import datetime
def date_by_adding_business_days(add_days):
business_days_to_add = add_days
current_date = datetime.date.today()
while business_days_to_add > 0:
current_date += datetime.timedelta(days=1)
weekday = current_date.weekday()
if weekday >= 5: # sunday = 6
continue
business_days_to_add -= 1
return current_date
x['Finish'] = x['Complete'].apply(date_by_adding_business_days)
你的方法是正确的。 不过,您只需要通过 function 参考。
当你打电话申请时。 它将 dataframe 行传递给 function 并调用它。
您可以在 function 本身中计算像今天这样的变量
def date_by_adding_business_days(row):
add_days = row['Complete']
from_date = datetime.date.today()
business_days_to_add = add_days
current_date = from_date
while business_days_to_add > 0:
current_date += datetime.timedelta(days=1)
weekday = current_date.weekday()
if weekday >= 5: # sunday = 6
continue
business_days_to_add -= 1
return current_date
x['Finish'] = x.apply(date_by_adding_business_days, axis=1)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.