通过将不同数据框和标量的列值传递给Pandas Python中的函数,在第二个数据框中创建一个新列?

时间:2016-12-06 08:45:15

标签: python pandas dataframe

我的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"]
编辑:想出来。答案和解释如下。

1 个答案:

答案 0 :(得分:0)

df2["colname"] = df.apply(lambda row: findDay(row['col'], i), axis = 1)

如果我们想要提取特定列的每个行值并将其传递给用户定义的函数,我们必须使用apply函数。

axis = 1表示正在为该列获取每个行值。