首页 > 解决方案 > 如何在 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

任何帮助,将不胜感激。

谢谢

标签: pythonpandasdataframe

解决方案


利用:

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

推荐阅读