按索引值将大熊猫系列划分为连续的块

时间:2018-07-27 14:22:26

标签: python pandas numpy pandas-groupby

我正在尝试将Series分成几个部分,每个部分是连续的并且具有相同的索引。因此,对于此输入:

df = pd.Series([1,2,3,4,5,6,7], index=[1,1,1,2,2,1,1])

所需的结果将是三个块,如:

[[1,2,3], [4,5], [6,7]]

我试图使用groupby,但是将[1,2,3]和[6,7]分组为一个部分,这是不理想的,因为它们不连续:

>>> groups = list(df.groupby(df.index, sort=False))
>>> len(groups)
2

这可以在Pandas(或Numpy)中完成吗?

2 个答案:

答案 0 :(得分:3)

您可以

driver.switch_to_frame(driver.find_element_by_id('indeed-ia-1532701404288-0-modal-iframe'))
driver.switch_to_frame(driver.find_element_by_tag_name('frame'))

first_name = driver.find_element_by_id('input-applicant.name')

详细信息

获取后续块。

In [761]: [v.tolist() for _, v in df.groupby(df.index.to_series().diff().ne(0).cumsum())]
Out[761]: [[1, 2, 3], [4, 5], [6, 7]]

答案 1 :(得分:1)

您可以将系列转化为数据框,然后将groupbyshift + cumsum结合使用:

df = df.reset_index()

group_key = (df['index'] != df['index'].shift()).cumsum()
res = df.groupby(group_key)[0].apply(list).values.tolist()

print(res)

[[1, 2, 3], [4, 5], [6, 7]]

group_key枚举值组:

print(group_key)

0    1
1    1
2    1
3    2
4    2
5    3
6    3
Name: index, dtype: int32