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您可以检查