Python 如何使用pandas向数据透视表添加新列
我正试图创建一个新专栏,展示我拥有的每一种产品的权重 假设我有以下数据帧,我有:Python 如何使用pandas向数据透视表添加新列,python,pandas,pivot-table,Python,Pandas,Pivot Table,我正试图创建一个新专栏,展示我拥有的每一种产品的权重 假设我有以下数据帧,我有: PRODUCT UNIT_TESTED AVG_YIELD A 401 82.1042 B 1512 96.0687 C 292 22.7806 D 134 37.0088 使用 现在,我想为每个产品添加一个新列WEIGHTAGE 计算: 权重'A'=(单位测试'
PRODUCT UNIT_TESTED AVG_YIELD
A 401 82.1042
B 1512 96.0687
C 292 22.7806
D 134 37.0088
使用
现在,我想为每个产品添加一个新列WEIGHTAGE
计算:
权重'A'=(单位测试'A'/单位测试总数)*100
这就是我一直致力于编写代码来创建新专栏的地方
我的期望输出:
PRODUCT UNIT_TESTED AVG_YIELD WEIGHTAGE
A 401 82.1042 17.1441
B 1512 96.0687 64.6430
C 292 22.7806 12.4840
D 134 37.0088 5.7289
假设您的pivot表是pivot_df
pivot_df['WEIGHTAGE'] = (pivot_df['UNIT_TESTED'] * 100 ) / pivot_df['UNIT_TESTED'].sum()
您获得的数据透视表的最后一行包含已测试单元的总和。因此,您可以简单地除以该值(
pivot\u df.loc[“All”,“UNIT\u TESTED”]
)列UNIT\u TESTED
:
pivot_df = pd.pivot_table(data = df, index = ['PRODUCT'],
values = ("UNIT_TESTED","AVG_YIELD"),
aggfunc = "sum", margins=True)\
.fillna('')
pivot_df["Weightage"] = round((pivot_df["UNIT_TESTED"] / pivot_df.loc["All","UNIT_TESTED"])*100,2)
print(pivot_df)
输出:
AVG_YIELD UNIT_TESTED Weightage
PRODUCT
A 82.1042 401 17.14
B 96.0687 1512 64.64
C 22.7806 292 12.48
D 37.0080 134 5.73
All 237.9615 2339 100.00
我已经尝试了代码,它的工作。我以前从未使用过所有数据,因此我对如何获取数据透视表的总计感到迷茫。你知道我如何在降序中进一步对列进行排序吗?
pivot\u df.排序值(“WEIGHTAGE”,升序=False)
像这样吗?是的。经过几个小时的研究,我只找到了这个编码……无论如何,谢谢你的回复
AVG_YIELD UNIT_TESTED Weightage
PRODUCT
A 82.1042 401 17.14
B 96.0687 1512 64.64
C 22.7806 292 12.48
D 37.0080 134 5.73
All 237.9615 2339 100.00