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