【问题标题】:How to multiply arrays in pandas?如何在熊猫中乘以数组?
【发布时间】:2014-11-10 20:29:17
【问题描述】:

我有两个数组

x = [a,b,c] y = [5,6,7]

我想计算乘积,使得 x * y 的结果是
x[0]* 5 + x[1] * 6 + x[2] * 7

实际上,这是我使用 scipy 和 pandas 进行优化时必须形成的约束方程的一部分。

还有,

我在读取 csv 文件后创建了许多 numpy 数组。我想在运行时创建我的目标函数。 这是目标函数的硬编码形式

def objFunc(x,sign=1.0) :
"""return sign*(sum(coeff[0:] *(wf[0:] + wv[0:] * decisionVars[0:])**power.values[0:]))"""
return sign* (( coeff.values[0]*(wf.values[0]+ wv.values[0] *x[0])**power.values[0] ) +
(coeff.values[1]*(wf.values[1]+ wv.values[1] *x[0])**power.values[1])+
(coeff.values[2]*(wf.values[2]+ wv.values[2] *x[0])**power.values[2]) +
(coeff.values[3]*(wf.values[3]+ wv.values[3] *x[0])**power.values[3]) +
(coeff.values[4]*(wf.values[4]+ wv.values[4] *x[0])**power.values[4] )+
(coeff.values[5]*(wf.values[5]+ wv.values[5] *x[0])**power.values[5]) +
(coeff.values[6]*(wf.values[6]+ wv.values[6] *x[1])**power.values[6]) +
(coeff.values[7]*(wf.values[7]+ wv.values[7] *x[1])**power.values[7]) +
(coeff.values[8]*(wf.values[8]+ wv.values[8] *x[1])**power.values[8]) +
(coeff.values[9]*(wf.values[9]+ wv.values[9] *x[2])**power.values[9]) +
(coeff.values[10]*(wf.values[10]+ wv.values[10] *x[2])**power.values[10]) +
(coeff.values[11]*(wf.values[11]+ wv.values[11] *x[2])**power.values[11]))

我用了各种方法来计算,但都无济于事。

df = pd.DataFrame.from_csv('C:\Users\prashant.mudgal\Downloads\T1 - Copy.csv')
df2 = pd.DataFrame.from_csv('C:\Users\prashant.mudgal\Downloads\T2.csv')
decisionVars= df2['DV']
coeff = df2['coef']

"""subset for power"""
power = df2['p']
wf = df2['weight_f']
wv = df2['weight_v']

def objFunc(x,sign=1.0) :
return sign*(sum(coeff[0:] *(wf[0:] + wv[0:] * decisionVars[0:])**power.values[0:]))

【问题讨论】:

  • 我对 pandas 不是很熟悉,但看起来应该很简单——类似于x * y。有代码吗?
  • 如果你有两个数组,那不是pandas,只是numpy,答案是x * y。如果你有DataFrames 或其他实际上熊猫的东西,那么你必须告诉我们你有什么,并通过将它们相乘来准确解释你的意思,因为它们没有@987654327 @、[1] 等值。
  • 大家好,是的,我正在尝试使用 scipy 和 pandas 包进行优化,在没有文献的情况下很难破解。我在这里发布了我原来的问题,stackoverflow.com/questions/25799201/…。我必须定义一个约束,使得 DV1 *history_inv1 + DV2 *history_inv2 + DV3 *historic_inv3 = 20000。DV1、DV2、DV3 在 T1.csv 的 DV 列中,而历史投资在 T1.csv 的 hist_inv 列中。上面的链接有 T1.csv 和 T2.csv 的描述

标签: python arrays numpy pandas scipy


【解决方案1】:

这是开箱即用的:

In [9]: df = pd.DataFrame([[1,5],[2,6],[3,7]], columns=list('ab'))

In [10]: df
Out[10]: 
   a  b
0  1  5
1  2  6
2  3  7

In [11]: df.a * df.b
Out[11]: 
0     5
1    12
2    21
dtype: int64

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-04
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    • 2016-01-02
    • 2020-11-20
    • 2017-09-28
    相关资源
    最近更新 更多