如何在pandas组的第二列上运行逻辑?

2024-04-25 17:53:46 发布

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

我有一个大的数据帧分组如下:

dates = frame['DATE'].unique()
test2 = frame.groupby(['NAME','DATE']).sum()

#NAME   DATE       VALUE
 AACT   20160602   186615450
        20160603   186615450
        20160604   186615450
        20160605   186615450
        20160606   186615450
        20160607   186615450
        20160608   186615450
        20160609   186615450
        201606010  186615450

 BAML   20160602   21900000
        20160603   21900000
        20160604   21900000
        20160605   21900000
        20160606   21900000
        20160607   21900000
        20160608   21900000
        20160609   21900000
        201606010  21900000
        201606011  21900000
        201606012  21900000
        201606013  21900000
        201606014  21900000

我在这里尝试的是按name键获取每个组,并通过逻辑检查迭代每个组的“DATE”列:

test2['STATUS'] = test2['DATE'].isin(dates).map({True:'Update',False:'Delete'})

因此,本质上,条目“ACCT”将具有“Delete”,用于20160610之后的任何内容,因为没有值。你知道吗

上面的公式不起作用,给了我一个“KeyError”,我想是因为我没有正确引用组。如何在每个组项上运行此逻辑?你知道吗

对于每个名称组,所需的输出应该是这样的:

#NAME   DATE       VALUE      STATUS
 AACT   20160602   186615450  Update
        20160603   186615450  Update
        20160604   186615450  Update
        20160605   186615450  Update
        20160606   186615450  Update
        20160607   186615450  Update
        20160608   186615450  Update
        20160609   186615450  Update
        201606010  186615450  Update
        20160611              Delete

Tags: 数据namedatevaluestatusupdate逻辑delete