1

我正在尝试执行以下操作:

对于满足“B”列条件的“A”列的每一行,我想用列表“end”的第一个元素替换“A”列中的值,然后删除第一个元素,以便下一行是列表中先前的“第二个”元素。

如果我用 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))

有任何想法吗?

4

0 回答 0