我有一个看起来像这样的数据框:
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
提前感谢您的帮助!
答案 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'))