我正在尝试将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)中完成吗?
答案 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)
您可以将系列转化为数据框,然后将groupby
与shift
+ 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