Python 如何将新列添加到数据框中,并以百分比为单位对其进行分组?

Python 如何将新列添加到数据框中,并以百分比为单位对其进行分组?,python,pandas,dataframe,pandas-groupby,Python,Pandas,Dataframe,Pandas Groupby,此数据帧如下所示: data = {'dates': ['01.05.2020', '01.05.2020', '01.05.2020', '02.05.2020', '02.05.2020', '03.05.2020', '03.05.2020'], 'amount' : [500,1000, 2000,3000,1000,4000, 2300], 'state' : ['ABC', 'ERT', 'ABC', 'XYZ', 'ERT' , 'ZEQ', 'ERT']}

此数据帧如下所示:

data = {'dates': ['01.05.2020', '01.05.2020', '01.05.2020', '02.05.2020', '02.05.2020', '03.05.2020', '03.05.2020'], 
        'amount' : [500,1000, 2000,3000,1000,4000, 2300], 'state' : ['ABC', 'ERT', 'ABC', 'XYZ', 'ERT' , 'ZEQ', 'ERT']}

在列状态中,我们有四个不同的值(ABC、ERT、XYZ和ZEQ)。现在,我的目标是为每个州每天的金额百分比添加新的列。因此,我们需要按日期分组,然后计算每个州的每日金额百分比

因此,例如,新数据框的第一行应该如下所示:

如何以最简单的方式执行此操作?

用于使用
sum
旋转,然后除以每行的总和值:

df = pd.DataFrame(data)

df1 = df.pivot_table(index='dates', 
                    columns='state', 
                    values='amount', 
                    fill_value=0, 
                    aggfunc='sum')
df1 = df1.div(df1.sum(axis=1), axis=0).round(2)
print (df1)
state        ABC   ERT   XYZ   ZEQ
dates                             
01.05.2020  0.71  0.29  0.00  0.00
02.05.2020  0.00  0.25  0.75  0.00
03.05.2020  0.00  0.37  0.00  0.63

关于功能“div”的一个问题。我知道,使用sum(axis=1),我们将每列中的值相加(第一行为0.71+0.29+0+0)。但是,第二个属性(axis=0)是什么?@Minfetli您可以检查