python - 当相邻列包含某个值时,如何从每个 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
'''
解决方案
国际大学联合会,
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 创建一个布尔序列,然后用于进行布尔索引。
推荐阅读
- ios - 单元格一开始没有出现,但如果我向下滚动并返回,则显示
- node.js - 如何在 godaddy VPS 上部署 MERN 应用程序
- python - pandas 窗口函数 first n 而不是 last n
- multithreading - WSO2 ESB 在 ActiveMQ 中创建了太多临时咨询主题
- php - mcrypt_create_iv alternative in PHP 7.3
- amazon-ec2 - 获取对 Windows 实例的控制台访问权限
- java - 如何构建图?
- excel - Openpyxl加载和保存工作簿很慢,如何提高速度?
- arrays - 如何检查一个数组的某一列中的任何元素是否在 R 中另一个数组的某一列中的文本中?
- powershell-2.0 - 用于从分发列表中删除用户的 Powershell 脚本