您好,我有以下数据框:
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
我想以某种方式访问值(“费用”)并仅选择费用差异小于 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'])
)
关于python - 比较分组数据帧的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71752023/