我有一个与此类似的数据帧:
Errorid Matricule Priority
0 1 01 P1
1 2 01 P2
2 3 01 NC
3 4 02 P1
4 5 02 P4
5 6 02 EDC
6 7 02 P2
该列表列出了矩阵的所有错误及其优先级
我要做的是计算矩阵的所有错误,同时排除“NC”和“EDC”,并将结果放入相同的数据框中
结果示例:
Errorid Matricule Priority NberrorsMatricule
0 1 01 P1 2
1 2 01 P2 2
2 3 01 NC 2
3 4 02 P1 3
4 5 02 P4 3
5 6 02 EDC 3
6 7 02 P2 3
我尝试了以下多种方法:
DF['NberrorsMatricule'] = DF.groupby('Matricule')['Pirority'].transform(lambda x : x.count() if x in ['P1','P2','P3','P4'])
DF['NberrorsMatricule'] = DF.groupby('Matricule')[DF['Pirority'] in ['P1','P2','P3','P4']].transform("count")
每次我得到一个不明确的值错误。 ValueError:序列的真值不明确。使用a.empty()、a.bool()、a.item()、a.any()、a.all()
请注意,这一项工作:
DF['NberrorsMatricule'] = DF.groupby('Matricule')['Pirority'].transform("count")
但它显然没有过滤出优先权
这些dataframe就是一个例子,事实上,我处理的数据量很大(这一次超过400k) 所以 如果有人能帮助我理解transform()的行为,以及如何有效地过滤数据,那将非常好
提前谢谢你的帮助
像这样:
要删除
Nan
,请使用ffill()
:您可以使用^{} 和^{} 将不匹配的值替换为缺少的值,因此,如果使用^{} 和^{} ,则会排除缺少的值:
详细信息:
另一种解决方案是通过} 或^{} :
sum
对匹配值进行计数,以便将True
和False
转换为1, 0
可以使用^{相关问题 更多 >
编程相关推荐