将序列与数据帧相乘

2024-06-14 02:57:40 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一系列的金额(让我们想想moneys,让它更具相互关联性),我想在人们之间(franco、franchino和gianmarco)分配这些金额

import pandas as pd
import numpy as np
moneys = pd.Series({'a':1, 'b':3, 'c':10, 'd':9, 'e':7})
percentages = pd.DataFrame({'franco':[0.1],'franchino':[0.5],'gianmarco':[0.4]})

enter image description here

在这种情况下,我想得到一个矩阵5x3,如下所示:

enter image description here

是否有一个类似于pd.multiply或.dot的函数来完成这个工作


Tags: importnumpydataframepandasasnp金额series
2条回答

使用df.dot

moneys.to_frame().dot(percentages)

   franchino  franco  gianmarco
a        0.5     0.1        0.4
b        1.5     0.3        1.2
c        5.0     1.0        4.0
d        4.5     0.9        3.6
e        3.5     0.7        2.8

这与您预期的结果相同,最后两列被置换

你可以

In [5868]: pd.DataFrame(percentages.values * moneys.values[:, np.newaxis], 
                        columns=percentages.columns, index=moneys.index)
Out[5868]:
   franchino  franco  gianmarco
a        0.5     0.1        0.4
b        1.5     0.3        1.2
c        5.0     1.0        4.0
d        4.5     0.9        3.6
e        3.5     0.7        2.8

细节

In [5869]: percentages.values * moneys.values[:, np.newaxis]
Out[5869]:
array([[ 0.5,  0.1,  0.4],
       [ 1.5,  0.3,  1.2],
       [ 5. ,  1. ,  4. ],
       [ 4.5,  0.9,  3.6],
       [ 3.5,  0.7,  2.8]])

相关问题 更多 >