【发布时间】:2019-02-26 09:45:10
【问题描述】:
我有一个熊猫数据框mydf,它有两列,两列都是日期时间数据类型:mydate 和mytime。我想再添加三列:hour、weekday 和 weeknum。
def getH(t): #gives the hour
return t.hour
def getW(d): #gives the week number
return d.isocalendar()[1]
def getD(d): #gives the weekday
return d.weekday() # 0 for Monday, 6 for Sunday
mydf["hour"] = mydf.apply(lambda row:getH(row["mytime"]), axis=1)
mydf["weekday"] = mydf.apply(lambda row:getD(row["mydate"]), axis=1)
mydf["weeknum"] = mydf.apply(lambda row:getW(row["mydate"]), axis=1)
sn-p 有效,但它的计算效率不高,因为它至少循环了数据帧 3 次。我只想知道是否有更快和/或更优化的方法来做到这一点。例如,使用zip 或merge?例如,如果我只创建一个返回三个元素的函数,我应该如何实现呢?为了说明,函数将是:
def getHWd(d,t):
return t.hour, d.isocalendar()[1], d.weekday()
【问题讨论】: