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