matsuo_basho
matsuo_basho

Reputation: 3020

Create a dataframe from a series with a TimeSeriesIndex multiplied by another series

Let's say I have a series, ser1 with a TimeSeriesIndex length x. I also have another series, ser2 length y. How do I multiply these so that I get a dataframe shape (x,y) where the index is from ser1 and the columns are the indices from ser2. I want every element of ser2 to be multiplied by the values of each element in ser1.

import pandas as pd
ser1 = pd.Series([100, 105, 110, 114, 89],index=pd.date_range(start='2021-01-01', end='2021-01-05', freq='D'), name='test')

test_ser2 = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e'])

Perhaps this is more elegantly done with numpy.

Upvotes: 0

Views: 19

Answers (1)

Scott Boston
Scott Boston

Reputation: 153460

Try this using np.outer with pandas DataFrame constructor:

pd.DataFrame(np.outer(ser1, test_ser2), index=ser1.index, columns=test_ser2.index)

Output:

              a    b    c    d    e
2021-01-01  100  200  300  400  500
2021-01-02  105  210  315  420  525
2021-01-03  110  220  330  440  550
2021-01-04  114  228  342  456  570
2021-01-05   89  178  267  356  445

Upvotes: 1

Related Questions