这似乎应该很简单,但我无法弄清楚如何将pandas数据帧的每一列乘以一系列中各自的值:
rng = pd.date_range('1/1/2011', periods=72, freq='H')
ts1 = pd.Series(np.random.randn(len(rng)), index=rng)
ts2 = pd.Series(np.random.randn(len(rng)), index=rng)
df=pd.DataFrame({"ts1":ts1, "ts2":ts2})
s3=pd.Series([3,4])
df.mul(s3, axis=0) # Gives 2 columns of NaNs
df.mul(s3, axis=1) # Gives 4 columns of NaNs
这里的目标只是让数据帧中ts1的所有值乘以3,并且数据帧中ts2的所有值乘以4. mul
似乎在df由非组成时工作正常时间序列Series
。
答案 0 :(得分:0)
要将两个系列相乘,它们需要具有相同的索引(长度和值)。你可以像这样进行乘法运算,
s3 = pd.Series([3]*len(df.index), index = df.index)
s4 = pd.Series([4]*len(df.index), index = df.index)
df1 = df.ts1 * s3
df2 = df.ts2 * s4
答案 1 :(得分:0)
经过几个小时的搞乱,我得到了这个工作:
df.apply(lambda row: list(r * m for r, m in zip(row, s3)), axis=1)