下面是我的df的一个简化示例:
ds = pd.DataFrame(np.abs(randn(3, 4)), index=[1,2,3], columns=['A','B','C','D'])
ds['sum'] = ds.sum(axis=1)
看起来像是
A B C D sum
1 0.095389 0.556978 1.646888 1.959295 4.258550
2 1.076190 2.668270 0.825116 1.477040 6.046616
3 0.245034 1.066285 0.967124 0.791606 3.070049
我想创建4个新列,并计算每一行中总计的百分比值。因此,第一个新列中的第一个值应为(0.095389/4.258550),第二个新列中的第一个值应为(0.556978/4.258550)......依此类推。
3条答案
按热度按时间aiazj4mn1#
您可以轻松地为每个列手动执行此操作,如下所示:
如果要在一个步骤中对所有列执行此操作,可以使用
div
方法(http://pandas.pydata.org/pandas-docs/stable/basics.html#matching-broadcasting-behavior):如果您希望在一个步骤中将其添加到同一 Dataframe :
6l7fqoea2#
50few1ms3#
您可以将
sum
列转换为numpy列数组和广播分区。要将百分比添加为新列,