按时间序列乘以时间序列数据帧?

时间:2014-12-30 23:11:29

标签: python pandas

这似乎应该很简单,但我无法弄清楚如何将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

2 个答案:

答案 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)