在两个数据帧上迭代时改变数据帧中的值

2024-06-26 00:26:41 发布

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

我有两个数据帧:SpringdfStaffTraindf2

我在Springdf行上迭代,以提取字段AllocationStaffingStandardsValue(都是整数)和ArrivalMUkey(是字符串)

然后我利用ArrivalMUkey查找StaffTraindf2,并检索两个变量CurrentAllocationStaffingStandardsValue2(都是整数)

Springdf.Allocation < StaffingStandards and in StaffTraindf2 while CurrentAllocation < StaffingStandardsValue2时,将+1添加到AllocationCurrentAllocation。继续这样做,直到其中一个不再为真,然后移到Springdf的下一行

AllocationCurrentAllocation总是从0开始。StaffingStandardsValue(2)范围从1到100

我成功地编写了代码,仅在Springdf内完成了任务,但现在似乎无法正确地重写Traindf2内的值。当使用字符串StaffingStandardsValue2作为索引时,我想我在写整数值CurrentAllocation时遇到了问题(如果这听起来很可笑,请原谅)

下面的代码将运行,但不会更改StaffTrain2中的值。它们都保持在0

for row in springdf.index:
    Aloc = springdf.at[row, 'Allocation']
    Train = springdf.at[row, 'StaffingStandardsValue']
    ArrivalMUkey = springdf.at[row,'ArrivalMUkey']
    TrainMax =  StaffTraindf2.loc[StaffTraindf2['ArrivalMUkey'] ==ArrivalMUkey, 'StaffingStandardsValue'].sum()
    TrainUtilized = StaffTraindf2.loc[StaffTraindf2['ArrivalMUkey'] ==ArrivalMUkey, 'CurrentAllocation'].sum()
    while Aloc < Train & TrainUtilized < TrainMax:
        springdf.at[row, 'Allocation'] = Aloc + 1
        Aloc = springdf.at[row, 'Allocation']
        StaffTraindf2.loc[StaffTraindf2['ArrivalMUkey']==ArrivalMUkey, 'CurrentAllocation'].sum() + 1 = TrainUtilized
        TrainUtilized = StaffTraindf2.loc[StaffTraindf2['ArrivalMUkey'] ==ArrivalMUkey, 'CurrentAllocation'].sum()
    else:
       next

Tags: 整数locatrowsumallocationcurrentallocationspringdf