python - 熊猫替换值(分组和迭代)
问题描述
早上好
尝试替换某些值时,我遇到了当前问题。我有一个数据框,其中有一列“loc10p”将记录分成 10 个组,对于每个组,我将这些记录分组为更小的组,但每个组的起始范围为 1 个子组,而不是计算最后一个子组. 例如:
c2[c2.loc10p.isin([1,2])].sort_values(['loc10p','subgrupoloc10'])[['loc10p','subgrupoloc10']]
loc10p subgrupoloc10
1 1 1
7 1 1
15 1 1
0 1 2
14 1 2
30 1 2
31 1 2
2 2 1
8 2 1
9 2 1
16 2 1
17 2 1
18 2 2
23 2 2
我怎样才能将其转换为如下内容:
loc10p subgrupoloc10
1 1 1
7 1 1
15 1 1
0 1 2
14 1 2
30 1 2
31 1 2
2 2 3
8 2 3
9 2 3
16 2 3
17 2 3
18 2 4
23 2 4
我试图做一个循环,将每个组类别分成不同的数据框,然后用前一组的计数器替换子组的值,但它没有替换任何东西:
w=1
temporal=[]
for e in range(1,11):
temp=c2[c2['loc10p']==e]
temporal.append(temp)
for e,i in zip(temporal,range(1,9)):
try:
e.loc[,'subgrupoloc10']=w
w+=1
except:
pass
任何帮助将不胜感激!
解决方案
尝试ngroup
df['out'] = df.groupby(['loc10p','subgrupoloc10']).ngroup()+1
Out[204]:
1 1
7 1
15 1
0 2
14 2
30 2
31 2
2 3
8 3
9 3
16 3
17 3
18 4
23 4
dtype: int64
推荐阅读
- jqgrid - jqgrid 在编辑或添加表单时未显示任何字段
- kubernetes - 如果节点变为离线超时,Kubernetes 会重新创建 pod
- excel-formula - 使用带有通配符的 excel vlookup
- javascript - Magento 2 - 来自 Javascript 的请求返回状态码 302
- kubernetes - 将相关容器托管在节点上,避免网络访问成本
- powershell - 在 Powershell 中替换包含引号的字符串
- c# - 实现静态方法的最佳实践
- teradata - Teradata 以数字格式导出时间结果
- mysql - 如何从不同的列中选择最旧的日期?
- javascript - 实现 UI 后 p5.js 草图不起作用