Python中文
首页
教程
问答
标签
搜索
登录
注册
在python中使用带group by的条件滚动计数
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我有一个样本数据集-</p> <pre><code>Id Category 1 Active 1 Active 1 Active 1 End 2 Paused 2 Active 2 Active </code></pre> <p>预期输出是基于计数器的新列,该计数器使用group by id,并在类别更改时重置计数器</p> <p>预期产量:-</p> <pre><code>Id Category Count 1 Active 0 1 Active 1 1 Active 2 1 End 0 2 Omitted 0 2 Active 0 2 Active 1 </code></pre> <p>我已经使用了以下方法:</p> <pre><code>m = df['Category'] != df['Category'].shift(-1) df['count'] = np.where(m, df.groupby(m.ne(m.shift(),'Id').cumsum()).cumcount()+1, 0) </code></pre> <p>但它只填充了0</p> <p>我也试过这个-</p> <pre><code>mask = df['Id'] == df['Id'].shift(-1) df['CatChange'] = df['Category'] != df['Category'].shift(-1) count = df[mask].groupby('Id').cumcount() df['CatChange_num'] = count </code></pre> <p>这只是在不考虑类别更改的情况下增加值</p> <p>任何提示都会有帮助</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>我们可以<code>groupby</code>两列和<code>cumcount</code></p> <pre><code>df.groupby(['d','Category']).cumcount() 0 0 1 1 2 2 3 0 4 0 5 0 6 1 dtype: int64 </code></pre>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
“matplotlib”ImportError:DLL加载失败:%1不是有效的Win32应用程序
3 回答
“matplotlib”中对字体设置的奇怪响应
2 回答
“matplotlib”如何将绘图调整为图形大小?
10 回答
“Matplotlib不支持生成器作为输入。当我尝试使用scatter()打印列表时”
7 回答
“matplotlib中的点悬停时是否可能显示标签?”
6 回答
“max_features”如何限制sklearn集成模型中的特征数量?
2 回答
“max_poolig2d_3/MaxPool”的1减去2导致维度大小为负
9 回答
“maxiter”参数对中的方法“SLSQP”有效吗scipy.optimize.minimize?
10 回答
“maxRunningTime”选项的格式(谷歌人工智能平台)
3 回答
“MDMenuItem”对象在MDDropdownMenu上没有属性“callback”
7 回答
“Mean”不适用于Pandas数据帧,从Pickle读取16 x 200000+个观察值
10 回答
“MediaDefiningClass”对象不是iterable Djangoimportexp
8 回答
“Medicine”对象没有属性“add”错误
2 回答
“MergeSummary”Op的“inputs”具有与预期类型字符串不匹配的类型[bool,bool,bool,bool,bool,bool,bool]
10 回答
“message”:“所需的请求部分“file\”不存在”
10 回答
“message”是Django还是Python中的保留字?
2 回答
“method”和“method”的实例之间不支持“<”,Python,Djang
8 回答
“method”对象不可订阅。不知道怎么了
3 回答
“Method”对象不是iterab
10 回答
“method”对象不是iterable dataframe python
10 回答