当相邻列包含某个值时,如何从数据帧解析每个ID的数据?

问题描述

我有以下格式的大数据框。我只需要解析剩下的ID中values == 1的值。应该在每个ID上重置此值,以使其在包含值1的唯一ID中采用第一个值,并在ID号终止时结束。

d={'ID':[1,1,2,3,4,5,5] \,'values':[0,] }
df=pd.DataFrame(data=d)
df=pd.DataFrame(data=d)
df



ND = {'ID':[1,5],\
 'values':[1,1]}

    
df_final=pd.DataFrame(ND)
df_final

'''

解决方法

IIUC,

df[df.groupby('ID')['values'].transform('cummax')==1]

输出:

    ID  values
3    1       1
4    1       0
5    2       1
6    2       0
7    2       1
8    2       1
9    2       1
11   3       1
12   3       0
13   3       0
18   4       1
19   4       1
20   4       0
21   4       1
22   4       0
23   5       1
24   5       1
25   5       1
26   5       1
27   5       1

详细信息,首次发现后,请使用cummax使其值保持为1。然后使用等于1的值创建一个布尔序列,然后将其用于布尔索引。

,

如果您的列值只有0和1,则可以使用groupby.cummax,如果每个ID后面有1,它们将用1替换0,然后将其用作布尔掩码:

df_ = df[df.groupby('ID')['values'].cummax().astype(bool).to_numpy()]
print(df_)
    ID  values
3    1       1
4    1       0
5    2       1
6    2       0
7    2       1
8    2       1
9    2       1
11   3       1
12   3       0
13   3       0
18   4       1
19   4       1
20   4       0
21   4       1
22   4       0
23   5       1
24   5       1
25   5       1
26   5       1
27   5       1

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...