python - pandas DataFrame 列中特定值的连续行的累积计数
问题描述
我有这个数据框,想添加另一列 cumcounts 直到它不等于星*
号,然后在星号重新出现时从 1 再次继续。
Star
0 *
1 *
2 *
3 *
4 s
5 s
6 *
7 *
输出期望:
Star Number
0 * 1
1 * 2
2 * 3
3 * 4
4 s NaN
5 s NaN
6 * 1
7 * 2
解决方案
这是一个简单的groupby
掩蔽操作。
m = df.Star.ne('*')
# Big thanks to @W-B for the bug fix!
df['Number'] = df[~m].groupby(m.cumsum()).cumcount().add(1)
df
Star Number
0 * 1.0
1 * 2.0
2 * 3.0
3 * 4.0
4 s NaN
5 s NaN
6 * 1.0
7 * 2.0
推荐阅读
- android - Android Studio 在我的项目之间混淆,无法无缝切换
- orange-api - 清洁会话(活动对象橙色)
- r - 如何在R中使用带有外生变量的var进行预测
- java - WebServiceTemplate 客户端 SoapFaultClientException
- vba - 数据透视表中的慢项过滤(.ManualUpdate = True NOT WORKING)
- node.js - 让节点模块与打字稿一起工作
- java - Eclipse Tomcat 服务器未启动
- javascript - JAVASCRIPT 将 div 导出为 PDF 时出错
- python - 在python中从json中提取元素
- visual-studio - 在 Visual Studio 中运行 ASP.NET Core Web 应用程序时推荐的服务器