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

时间:2018-02-12 15:20:22

标签: python python-2.7 pandas

假设我想为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方法是什么?

3 个答案:

答案 0 :(得分:4)

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

from itertools import groupby

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

答案 1 :(得分:2)

使用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)

答案 2 :(得分:1)

我真的想保留它pandas所以这就是你只能用熊猫做的事情:

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