比较分组数据框的值

Compare values of a grouped dataframe

您好,我有以下数据框:

df=streets.groupby(['Address','Username'])['Fees'].sum()
df

Address   Username      
street1   acc1         275.39
          acc2         279.60
          acc3         249.96
street2   acc4         10634.11
          acc5         11445.39
          acc5         3832.67

我想以某种方式访问​​值 ('Fees') 和 select 只有费用差异小于 50 的组,在我们的示例组中,地址 = street1

提前致谢

IIUC,你可以计算每组的最大值和最小值之间的差异,如果小于 50,那么它们都在 50 以内:

g = df.groupby(level='Address')
s = (g.max()-g.min())
idx = s[s.lt(50)].index

df.loc[idx]

输出:

Address  Username
street1  acc1        275.39
         acc2        279.60
         acc3        249.96
Name: Fee, dtype: float64

注意。你所说的 df 实际上是一个系列。如果它是一个 DataFrame,你需要做 g = df.groupby(level='Address')['Fee']

使用的输入:

df = (pd.Series({('street1', 'acc1'): 275.39,
                 ('street1', 'acc2'): 279.6,
                 ('street1', 'acc3'): 249.96,
                 ('street2', 'acc4'): 10634.11,
                 ('street2', 'acc5'): 3832.67}, name='Fee')
        .rename_axis(['Address', 'Username'])
      )