根据条件将数据帧分为几组

时间:2019-10-01 16:35:53

标签: python pandas numpy

我具有以下结构的数据框:

Id.    Value.

 1. 10
 2. 12
 3. 14
 4. 16
 5. 30
 6. 32
 7. 35
 8. 36
 9. 60
 10. 61
 11. 63
 12. 67
 13. 70

我想使用条件语句将其分为若干组,该语句比较数据框中的后续行,什么是最好的方法?

1 个答案:

答案 0 :(得分:1)

IIUC,您可以尝试这样做:

s = pd.Series([10,12,14,16,30,32,35,36,60,61,63,67,70])
s.groupby((s.diff() >= 10).cumsum()).apply(list)

输出:

0        [10, 12, 14, 16]
1        [30, 32, 35, 36]
2    [60, 61, 63, 67, 70]
dtype: object

对于数据框:

df = pd.DataFrame({'id':np.arange(1,14),
                  'Value':[10,12,14,16,30,32,35,36,60,61,63,67,70]})

df.groupby(df['Value'].diff().ge(10).cumsum())['Value'].apply(list).tolist()

输出:

[[10, 12, 14, 16], [30, 32, 35, 36], [60, 61, 63, 67, 70]]