首页 > 解决方案 > 当相邻列包含某个值时,如何从每个 ID 的数据框中解析数据?

问题描述

我有以下格式的大型数据框。我只需要解析出 values ==1 的值并通过剩余的 id。这应该在每个 ID 上重置,以便它获取包含值 1 的唯一 id 中的第一个值,并在 id 编号终止时结束。

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



ND = {'ID':[1,1,2,2,2,2,2,3,3,3,4,4,4,4,4,5,5,5,5,5],\
 'values':[1,0,1,0,1,1,1,1,0,0,1,1,0,1,0,1,1,1,1,1]}

    
df_final=pd.DataFrame(ND)
df_final

'''

标签: pythonpandasparsing

解决方案


国际大学联合会,

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 创建一个布尔序列,然后用于进行布尔索引。


推荐阅读