我正在尝试执行以下操作:
对于满足“ B”列条件的“ A”列的每一行,我想将“ A”列中的值替换为列表“ end”的第一个元素,然后删除第一个元素因此对于下一行,采用列表中先前的“第二”元素。
如果我要使用for循环来执行此操作,则其条件将是这样,假设条件是上一行中B的值为True(B仅包含布尔值):
for i in range(1, len(data)-1):
if data.loc[i, 'B'].shift(-1) == True:
data.loc[i, 'A'] = end[0]
del end[0]
由于我的df很大,因此我正在寻找矢量化版本,但是显然我的方法行不通,它始终只使用列表的第一个元素:
data['A'][data['B'].shift(-1)== True] = data['A'].apply(lambda x: end.pop(0))
有什么想法吗?