将数据框的某一行乘以相同维度的另一个数据框的另一行的值

时间:2019-04-30 14:04:39

标签: python pandas

我有一个要填充的数据帧,方法是按行对它进行迭代,然后尝试将前一行乘以相同尺寸的另一个数据帧的另一行中包含的值,然后将结果行插入第一个数据帧。 / p>

我已经使用.loc过滤每个数据帧的行,然后尝试使用.mul,但是我遇到了TypeError。同样由于某种原因,第一个dataframe.loc导致转置序列,而第二个没有,我被迫在其中添加.transpose()

dfPortW.loc[i,"NAV":] = dfPortW.loc[i-1,"NAV":].mul(dfReturns1.loc[dfReturns1["Dates"] == date, "NAV":].transpose()

1 个答案:

答案 0 :(得分:0)

好的,我找到了一种解决方案……虽然不是一种优雅的解决方案,但是它可以工作。

我怀疑问题是由以下事实引起的:pdandas / python没有将dfReturns1单行读为Series,而dfPortW是其中的一行。解决问题的是:

    j = dfReturns1["Dates"][dfReturns1["Dates"] == date]
    j = j.index[0]
    dfPortW.loc[i,"NAV":] = dfPortW.loc[i-1,"NAV":].mul(dfReturns1.loc[j,"NAV":], axis = 0)

这确保了这两个都是系列,并且是一个.mul系列,效果很好……再一次,虽然不优雅,但是可以。