Python 是否可以在数据透视表中仅删除一个aggfunc的重复项?
我正在pandas中构建一个透视表,需要对数据应用各种函数。我的问题是,对于某些aggfunc,我需要将它们应用于整个数据集,而对于其他aggfunc,我需要在应用函数之前删除重复项。我的数据帧与此类似: 我使用的数据帧与此类似: 名称 指标1 指标2 国家 付款 约翰 0.10 5 加拿大 100 约翰 0.30 1 加拿大 100 约翰 .40 加拿大 100 简 0.50 美国 30 简 美国 30 杰克 英国 50 杰克 .70 2. 英国 50 杰克 1 英国 50 杰克 英国 50 波利 0.30 加拿大 150 迈克 阿根廷 80 迈克 阿根廷 80 史蒂夫 加拿大 20 百合花 0.15 1.20 墨西哥 40 凯特 3 澳大利亚 90 爱德华 0.05 澳大利亚 70 皮特 0.02 0.03 新西兰 20Python 是否可以在数据透视表中仅删除一个aggfunc的重复项?,python,pandas,dataframe,pivot-table,Python,Pandas,Dataframe,Pivot Table,我正在pandas中构建一个透视表,需要对数据应用各种函数。我的问题是,对于某些aggfunc,我需要将它们应用于整个数据集,而对于其他aggfunc,我需要在应用函数之前删除重复项。我的数据帧与此类似: 我使用的数据帧与此类似: 名称 指标1 指标2 国家 付款 约翰 0.10 5 加拿大 100 约翰 0.30 1 加拿大 100 约翰 .40 加拿大 100 简 0.50 美国 30 简 美国 30 杰克 英国 50 杰克 .70 2. 英国 50 杰克 1 英国 50 杰克 英国 50
由于不对列payment执行其他操作,因此可以
屏蔽列名称中重复的值(因此替换为nan
)
pd.pivot_table(df.assign(Payment=lambda x: x['Payment'].mask(x['Name'].duplicated())),
index=['Country'],values=["Name","Metric 1","Metric 2","Payment"],
aggfunc={'Name':pd.Series.nunique, "Metric 1":metricgreaterthanone,
"Metric 2":metricgreaterthanone,"Payment":np.sum},
margins=True)
Metric 1 Metric 2 Name Payment
Country
Argentina NaN NaN 1 80.0
Australia 0.5 NaN 2 160.0
Canada 0.0 0.333333 3 270.0
Mexico 0.0 1.000000 1 40.0
New Zealand 0.0 0.000000 1 20.0
UK 0.0 0.000000 1 50.0
US 0.0 NaN 1 30.0
All 0.0 0.666667 3 160.0
对于页边距问题,您可以看到