Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.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 将相似的连续行作为不同的组获取_Python_Pandas - Fatal编程技术网

Python 将相似的连续行作为不同的组获取

Python 将相似的连续行作为不同的组获取,python,pandas,Python,Pandas,我有一个这样的数据帧- ------ | lines| ------ A ------ A ------ A ------ B ------ B ------ A ------ A ------ C ------ C 我需要找到具有类似行的组的计数和名称,例如,组中返回的元素计数以及其中的值 例如,在上面的示例中,输出应该是- 3 - {"A"} 2 - {"B"} 2 - {"A"} 2 - {"C"} 请注意

我有一个这样的数据帧-

------
| lines|
------
A
------
A
------
A
------
B
------
B
------
A
------
A
------
C
------
C
我需要找到具有类似行的组的计数和名称,例如,组中返回的元素计数以及其中的值

例如,在上面的示例中,输出应该是-

3 - {"A"}
2 - {"B"}
2 - {"A"}
2 - {"C"}
请注意,不能将所有“A”组合在一起,因为“B”介于两者之间。因此,当行值更改时,它将形成一个组,但如果值稍后返回(如此处的“a”),则应将其视为一个单独的组

我的方法-

我试着用3种方法来做这件事——使用字典索引移位()方法,分组比()。唯一的问题是,意志和所有的“A”相同,所以将返回5而不是3和2作为单独的组。< / P>
任何人都可以帮忙,谢谢。

您可以使用
分组依据,分组依据
行是否与下面的
行相同(使用
shift
):


您可以使用
groupby
,根据
行是否与下面的
行相同进行分组(使用
shift
):


我想这正是我想要的。非常感谢。过了一会儿,窗口还没有打开。只是一个快速的后续问题-我有“行”系列,我如何才能分别访问第一部分和第二部分?将{A”,“B”,“A”,“C}作为一个系列,将值{3,2,2}作为另一个系列。你也能帮我吗?
result=result.reset_index(name='values')
非常感谢@tdi,我想这正是我想要的。非常感谢。过了一会儿,窗口还没有打开。只是一个快速的后续问题-我有“行”系列,我如何才能分别访问第一部分和第二部分?将{A”,“B”,“A”,“C}作为一个系列,将值{3,2,2}作为另一个系列。你能帮我一下吗?
result=result.reset_index(name='values')
非常感谢@tdy
result = (
    df.groupby(["lines", (df.lines != df.lines.shift()).cumsum()], sort=False)
    .size()
    .reset_index(level=1, drop=True)
)

>>> result
lines
A    3
B    2
A    2
C    2
dtype: int64