python - 如何在 pandas DataFrame 中找到最大连续负数数
问题描述
我有一列数字。我想计算如下列中连续负数的最大数量(即:一行中的负数)。
我想我应该先掩盖负数,但我想不通。
numbers max_cons
0 -1 1
1 3 1
2 2 1
3 -3 1
4 -4 2
5 9 2
6 3 2
任何帮助,将不胜感激。
谢谢
解决方案
利用:
m = df['numbers'].lt(0)
s = (m.shift(-1) & m).cumsum()[m]
df['max_cons'] = s.map(s.value_counts()).mask(~s.duplicated())
df['max_cons'] = df['max_cons'].ffill().fillna(1).astype(int)
print (df)
numbers max_cons
0 -1 1
1 3 1
2 2 1
3 -3 1
4 -4 2
5 9 2
6 3 2
推荐阅读
- hyperledger-fabric - 错误:尝试启动业务网络时出错。错误:没有来自任何对等方的有效响应
- c# - 在测试资源管理器 c# 上未发现 Specflow 测试
- mysql - 用文本中的段落更新
- android - 将库添加到 Android 项目后出错(发现多个文件与操作系统无关的路径 'META-INF/kotlinx-io.kotlin_module')
- google-calendar-api - 我可以从 gmail 插件打开日历吗
- r - ifelse 改变 Jacquard 计算列的结果?
- c++ - 如何编写 Eigen 切片代码的模板版本?
- gradle - 复合构建中的 Gradle 构建缓存
- php - 完全删除 php 及其对 RHEL7 的所有依赖项
- java - Pom/Jar 文件不在中心位置