我正在使用pandas,我想在if条件下复制行(col_a),即:如果col_b中的值是正负1 = duplicate。或者如果col_b是<= 1可能是一个可能的解决方案,而不是+或- 1,我也会接受它。理想情况下,我希望保留"重复"的数量,例如col_c。
DF:
col_a col_b
A000 10.16
A000 10.5
A000 10.9
A000 25.87
A000 26.5
B101 30.111
B101 8
DF_Output:
col_a col_b col_c
A000 10.16 3
A000 25.87 2
B101 30.111 1
B101 8 1
try this:
grouper = df['col_b'].sort_values().diff().fillna(float('inf')).gt(1).cumsum()
grouped = df.groupby(grouper, sort=False, as_index=False)
result = grouped.agg(**{'col_a': ('col_a', 'first'),
'col_b': ('col_b', 'first'),
'col_c': ('col_a', 'size')
})
print(result)
>>>
col_a col_b col_c
0 A000 10.160 3
1 A000 25.870 2
2 B101 30.111 1
3 B101 8.000 1