【发布时间】:2020-01-07 03:48:27
【问题描述】:
在groupby 之后,我想agg 和lambda 有条件,
只选择'product1_Gift0' == 1
但似乎无法得到答案
需要'保证金'计算的指导,而不是计算全部,仅在'product1_Gift0' equal '1'时计算
data = [['john', 'A01', 0, 0.0],['john', 'A01', 1, 1.0],['john', 'A01', 1, 0.5],['jess', 'B01', 0, 0.0],['jess', 'B01', 0, 0.0],['jess', 'B01', 1, 0.8]]
df2 = pd.DataFrame(data, columns = ['member', 'orderID','product1_Gift0','margin'])
df3 = df2.groupby('member').agg({
'product1_Gift0': lambda x: sum(x)/len(x),
'margin' : lambda x: sum(x)/len(x),
})
actual_result = [['john', 'A01', 0.3333, 0.50],
['john', 'A01', 0.6667, 0.27]]
expected_result = [['john', 'A01', 0.3333, 0.75],
['john', 'A01', 0.6667, 0.80]]
谢谢
【问题讨论】:
标签: python lambda group-by aggregate