Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Pandas中,我想按一个公共元素分组,并获得它们之间的元素列表_Python_Pandas - Fatal编程技术网

Python 在Pandas中,我想按一个公共元素分组,并获得它们之间的元素列表

Python 在Pandas中,我想按一个公共元素分组,并获得它们之间的元素列表,python,pandas,Python,Pandas,我想按一个公共元素分组,并获得它们之间的元素列表 我拥有的数据集如下: pd.DataFrame({'Type': {0: 'S', 1: '1', 2: '3', 3: '3', 4: '2', 5: 'S', 6: '4', 7: 'S', 8: '4', 9: '5', 10: '6', 11: 'S', 12: '2', 13: 'S'}}) Type 0 S 1 1 2 3 3 3 4 2 5 S 6 4 7 S

我想按一个公共元素分组,并获得它们之间的元素列表

我拥有的数据集如下:

pd.DataFrame({'Type': {0: 'S', 1: '1', 2: '3', 3: '3', 4: '2', 5: 'S', 6: '4', 7: 'S', 8: '4', 9: '5', 10: '6', 11: 'S', 12: '2', 13: 'S'}})

   Type
0     S
1     1
2     3
3     3
4     2
5     S
6     4
7     S
8     4
9     5
10    6
11    S
12    2
13    S
我可以使用更多的工具进行分组,但我想知道是否有一种更普遍的方法来完成这项任务:

预期输出(我为此使用了更多的工具,但有没有更泛的方法?)


另一方面,您可以使用groupby在元素之间分组,这样每个组都与上面的输出一样吗?

制作一个系列,指示哪些行在哪些组中:

groupidx = (df.Type == 'S').cumsum()
grouped = df.groupby(groupidx)
result = grouped.Type.apply(list)
结果是:

1    [S, 1, 3, 3, 2]
2             [S, 4]
3       [S, 4, 5, 6]
4             [S, 2]
5                [S]
1    [S, 1, 3, 3, 2]
2             [S, 4]
3       [S, 4, 5, 6]
4             [S, 2]
5                [S]
df = pd.DataFrame({'Type': {0: 'S', 1: '1', 2: '3', 3: '3', 4: '2', 5: 'S', 6: '4', 7: 'S', 8: '4', 9: '5', 10: '6', 11: 'S', 12: '2', 13: 'S'}})

df['seqnum'] = (df['Type'] == 'S').cumsum()
df.groupby('seqnum')['Type'].apply(list)