熊猫:计算分组中满足条件的时间

时间:2018-10-09 14:23:49

标签: python-2.7 pandas

我有一个看起来像这样的数据框:

        subgroup value
0         1      0
1         1      1
2         1      1
3         1      0
4         2      0
5         2      0
6         2      0
7         3      0
8         3      1
9         3      0
10        3      0

我需要添加一列,每当不同子组中至少有一个不同于0的值时,就添加1。请注意,如果值1在同一子组中重复多次,则不会影响计数。 结果应该是:

       subgroup  value   count
0         1      0        1
1         1      1        1
2         1      1        1
3         1      1        1
4         2      0        1
5         2      0        1
6         2      0        1
7         3      0        2
8         3      1        2
9         3      0        2
10        3      0        2

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

shift与-1和1一起使用,并将cumsum与结果

mask=(df.value.ne(df.value.shift()))&(df.value.ne(df.value.shift(-1)))
mask.cumsum()
Out[18]: 
0     1
1     1
2     1
3     1
4     1
5     1
6     1
7     1
8     2
9     2
10    2
Name: value, dtype: int32

答案 1 :(得分:1)

使用function categoryClick() { var events = ["mousemove", "mouseover", "focus", "mousedown", "mouseup", "click"]; var combobox = document.getElementById("category"); var a = combobox.childNodes; var target = a[0].childNodes[0]; for (var i = 0; i < events.length; i++) { if (typeof(Event) === 'function') { // just as you did var eventObject = new Event(events[i], { "bubbles": true, "cancelable": false }) } else { // fallback for IE var eventObject = document.createEvent('Event'); eventObject.initEvent(events[i], true, false); } target.dispatchEvent(eventObject); } }merge

groupby

df.merge(df.groupby('subgroup').value.sum().gt(0).cumsum().reset_index(name='out'))