如何解决当相邻列包含某个值时,如何从数据帧解析每个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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。