筛选大熊猫groupby count列的结果

时间:2019-04-24 08:54:45

标签: python

我已使用下面的代码根据“小时费率”和“小时费率四分位数”对我的Pandas数据帧进行分组。

e = df.groupby(['Hourly Rate Quartile', 'Hourly Rate']).size().reset_index(name='Count')

print(e)

这会打印出我的三列。

我现在想过滤这些结果并仅打印那些具有Count> 1的结果。

我尝试了许多不同的方式:

if e.loc[e['Count']] > 1:
         print (e)

在此之前,我还使用过:

if e['Count'] > 1:
         print (e)

在两种情况下,我都会得到一个ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

我也尝试了一个For循环。

for i in e['Count']:
         if i>1:
              print(i)

哪一个给我正确的结果,但我想得到所有三列。

所以,当我尝试:

for i in e['Count']:
         if i>1:
              print(e)

它将再次打印所有内容。

这是我尝试过的最后一件事:

for i in e:
    if i['Count']>1:
              print(i)

哪个给我这个错误:string indices must be integers.

你们有什么想法吗?

2 个答案:

答案 0 :(得分:0)

In [1]: df = pd.DataFrame({'c1': list("aacd"), 'c2': list("bbcd")})

In [2]: df
Out[2]:
  c1 c2
0  a  b
1  a  b
2  c  c
3  d  d

In [3]: series = df.groupby(['c1', 'c2']).size()

In[4]: series
Out[4]:
c1  c2
a   b     2
c   c     1
d   d     1
dtype: int64

In [5]: series[series > 1]
Out[5]:
c1  c2
a   b     2
dtype: int64

答案 1 :(得分:0)

import pandas as pd
import numpy as np

df = pd.DataFrame([['A', 5],
                   ['A', 4.],
                   ['B', 1],
                   ['B', 2]], columns=['col1', 'col2'])

df = pd.merge(df,
              (df
               .groupby('col1')
               .count()
               .reset_index()
               .rename(columns={'col2': 'count'})),
              how='left',
              on='col1')

xx = df.loc[df['count'] > 1]