首页 > 解决方案 > Python:根据来自特定单元格的输入更改数据框的值另一个数据框

问题描述

我正在尝试制作一个日程安排程序。随着时间的推移,我有来自预订 ID(索引)的输入。预订包括多天。df 看起来像(df_reservation):

    ResId 20190301  20190302 20190303 20190304 20190305     
     100      1.0     1.0      1.0      0.0      0.0        
     101      0.0     1.0      1.0      1.0      0.0   
     102      0.0     1.0      1.0      1.0      1.0   

上面的意思是,例如预订 100 是在前三天。第 2-4 天预订 101 等

另一个数据框,即房间的可用性看起来像(planboard):

   RoomId    20190301 20190302  20190303 2019030  20190305   
    1        1.0        1.0      1.0      1.0      1.0   
    2        1.0        1.0      1.0      1.0      1.0   
    3        1.0        1.0      1.0      1.0      1.0     

因此,例如房间 1 全天都可用。

现在我想遍历预订和房间,以便将第一个预订分配给那些日子可用的第一个房间。所以第一次迭代看起来像这样:

  RoomId    20190301 20190302  20190303 2019030  20190305
    1        100      100      100      1.0      1.0
    2        1.0      1.0      1.0      1.0      1.0
    3        1.0      1.0      1.0      1.0      1.0

我觉得困难的是确保预订在所有日子都分配到同一个房间。因此,不允许将预订 100 在前 2 天分配到房间 1,在最后一天分配到房间 2。此外,它被分配的,它是不允许改变的。当然,当房间不可用时,允许无法将预订分配给房间。希望你明白这一点并能够提供帮助!

提前致谢!

在下面的代码中,我尝试使用 for loopt。'Df_stay' 是保留(带有 0 和 1)。“planboard”首先是房间的可用性,然后它应该随着预订ID而改变。此外,我将预订更改为分配给它的大量预订(否则它会被多次分配给房间)。我无法将相同天数限制在同一个房间。

    for res, date, room in [(i,j, k) for i in ids_booking for j in datelist for k in accommodations]:
        if df_reservation.loc[res, date] == planboard.loc[room,date]:
            planboard.loc[room, date] = res
            df_reservation.loc[res, date] = 10

标签: pythonpandasdataframefor-loopanaconda

解决方案


推荐阅读