Python 如何通过计算基于两列创建Dataframe?

Python 如何通过计算基于两列创建Dataframe?,python,pandas,numpy,Python,Pandas,Numpy,我试图根据另外两个数据帧的两列的值创建一个数据帧 我希望新的DataFrame是一列(b)的值在另一列(a)上的所有值之间的份额,基于它们对该列(a)的加权贡献 目前,我已经能够通过循环解决它。但我想知道你是否能想到熊猫的矢量化函数能更快地解决这个问题 a=pd.DataFrame(np.random.randint(1,6700)) b=pd.DataFrame(np.random.randint(1,6400))*1000 最终股份=[] 权重=应付总额() 对于索引,b.ItErrors(

我试图根据另外两个数据帧的两列的值创建一个数据帧

我希望新的DataFrame是一列(b)的值在另一列(a)上的所有值之间的份额,基于它们对该列(a)的加权贡献

目前,我已经能够通过循环解决它。但我想知道你是否能想到熊猫的矢量化函数能更快地解决这个问题

a=pd.DataFrame(np.random.randint(1,6700))
b=pd.DataFrame(np.random.randint(1,6400))*1000
最终股份=[]
权重=应付总额()
对于索引,b.ItErrors()中的值:
加权值=权重*b.iloc[索引]。项()
最终份额追加(加权值)
最终共享=pd.concat(最终共享,轴=1)
最终共享列=b索引

这是使用
numpy
的基础。您需要外部产品:

import numpy as np
final_share = pd.DataFrame(np.outer(b, weight).T)
速度会快得多


对anom SOer的信用

使用
numpy

arr = a[0].values 
w = arr / arr.sum()

c = pd.DataFrame(w[:, None] * b[0].values)
或:

c = pd.DataFrame(np.outer(w, b[0].values))