当前位置: 代码迷 >> python >> 使用pandas在python中查找连续相同行的数量
  详细解决方案

使用pandas在python中查找连续相同行的数量

热度:90   发布时间:2023-07-16 11:20:29.0

假设我想为pandas数据框执行类似的操作:

In [247]:  import pandas as pd

In [248]: df = pd.DataFrame([[1, 2],[3, 4],[3,4],[3,4],[5,6]])

In [249]: df
Out[249]: 
   0  1
0  1  2
1  3  4
2  3  4
3  3  4
4  1  2

我想得到一个输出,告诉我第一行与第二行不同,第二行重复3次,然后第四行再次重复一次。 所以这样的输出

In [250]: (1, 3, 1)

什么是在python 2.7中实现这个(和快速)的pythonic方法?

这是一种方式。 我称之为pythonic而不是pandonic。

from itertools import groupby

dups = [sum(1 for _ in group) for _, group in groupby(zip(df[0], df[1]))] 

使用joinvalue_counts

s=df.astype('str').apply(','.join,1).value_counts(sort=False)
s
Out[275]: 
1,2    1
3,4    3
5,6    1
dtype: int64

有了元组

tuple(s.tolist())
Out[278]: (1, 3, 1)

我真的想保持pandas所以这是你只能用大熊猫做什么:

values = df.apply(tuple, axis=1)
counts = values.value_counts()
result = values.drop_duplicates().map(counts)
tuple(result)
#(1, 3, 1)