比较分组数据框的值
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'])
)
您好,我有以下数据框:
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'])
)