[英]How to create Dataframe based on the two columns with a calculation?
我试图基于另外2个DataFrames的两列的值创建一个DataFrame。
我希望新的DataFrame可以基于另一列(a)的所有值在该列(a)的加权贡献中占其中一列(b)的值的份额。
目前,我已经能够通过循环解决它。 但是我想知道您是否能想到熊猫中的任何矢量化函数可以更快地解决此问题?
a = pd.DataFrame(np.random.randint(1, 6, 700))
b = pd.DataFrame(np.random.randint(1, 6, 400))*1000
final_share = []
weight = a/a.sum()
for index, value in b.iterrows():
weighted_value = weight*b.iloc[index].item()
final_share.append(weighted_value)
final_share = pd.concat(final_share, axis = 1)
final_share.columns = b.index
这是numpy
。 您需要外部产品:
import numpy as np
final_share = pd.DataFrame(np.outer(b, weight).T)
它将更快。
归功于这种异常
使用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))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.