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

2024-10-02 20:38:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我的dataframe1包含day列,该列包含一周中每一天从1到7的数字数据。1-星期一,2-星期二…等等。 这一栏是航班起飞的日期

我需要在一秒钟内创建一个新的列dayOfBooking,它根据预订航班前的天数和航班的起飞日期查找一周中的哪一天

为此,我编写了以下函数:

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是标量值

我可以看到findDaydataframe1的整列day,而不是每行取一个值

有没有一个简单的方法来实现这一点,比如当我们希望第三列是每行其他两列的总和时,我们可以这样写:

dataframe["sum"] = dataframe2["val1"] + dataframe2["val2"]

编辑:找到了。回答和解释如下


Tags: 数据函数def数字int航班day天数
1条回答
网友
1楼 · 发布于 2024-10-02 20:38:13
df2["colname"] = df.apply(lambda row: findDay(row['col'], i), axis = 1)

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

axis = 1表示该列的每一行值都被采用

相关问题 更多 >