【发布时间】:2016-05-22 02:36:02
【问题描述】:
我注意到我的 question 以前的版本建议使用查询,但我有唯一的数据框,它们没有相同的列名。我想在没有 for 循环且仅使用 apply 函数的情况下编写此公式:
这里是初始化的变量。 mu=μ,其他变量如下:
mu=pd.DataFrame(0, index=['A','B','C'], columns=['x','y'])
pij=pd.DataFrame(np.random.randn(500,3),columns=['A','B','C'])
X=pd.DataFrame(np.random.randn(500,2),columns=['x','y'])
接下来,我可以使用嵌套的 for 循环来解决这个问题
for j in range(len(mu)):
for i in range(len(X)):
mu.ix[j,:]+=pij.ix[i,j]*X.ix[i,['x','y']]
mu.ix[j,:]=(mu.ix[j,:])/(pij.ix[:,j].sum())
mu
x y
A 0.147804 0.169263
B -0.299590 -0.828494
C -0.199637 0.363423
我的问题是是否可以不使用嵌套的 for 循环,甚至删除一个 for 循环来解决这个问题。我做了一些微不足道的尝试,但无济于事。
即使是我最初的尝试也会导致多个 NaN。
【问题讨论】:
标签: python pandas lambda dataframe apply