我的dataframe1
包含day
列,其中每周的每一天都有1到7的数字数据。 1 - 周一,2 - 周二......等。
此day
列是航班起飞的日期。
我需要在第二个dayOfBooking
中创建一个新列dataframe2
,根据人们预订航班的天数和航班起飞日期查找星期几。
为此,我写了这个函数:
def findDay(dayOfDeparture, beforeDay):
beforeDay = int(beforeDay)
beforeDay = beforeDay % 7
if((dayOfDeparture - beforeDay) > 0):
dayAns = currDay - beforeDay;
else:
dayAns = 7 - abs(dayOfDeparture - beforeDay)
return(dayAns)
我想要类似的东西:
dataframe2["dayOfBooking"] = findDay(dataframe1["day"], i)
其中i
是标量值。
我可以看到findDay
占据了day
的整个列dataframe1
,而不是为每一行取一个值。
有没有一种简单的方法可以实现这一点,就像我们希望第三列是每行的其他两列的总和一样,我们可以写下这个:
dataframe["sum"] = dataframe2["val1"] + dataframe2["val2"]
编辑:想出来。答案和解释如下。
答案 0 :(得分:0)
df2["colname"] = df.apply(lambda row: findDay(row['col'], i), axis = 1)
如果我们想要提取特定列的每个行值并将其传递给用户定义的函数,我们必须使用apply
函数。
axis = 1
表示正在为该列获取每个行值。