title: Python DataFrame: Break down one column using mapping
body: <p>I am trying to take an aggregated time-series and break it down to its component pieces. For example, I have a time series forecast, that I would like to break down between 3 buckets (red,blue,oj)</p>
  <pre><code>import pandas as pd
  import datetime as dt
  
  index = pd.date_range(start = dt.date.today(), end = dt.date.today() + dt.timedelta(days = 400), freq = 'M')
  
  df = pd.DataFrame(index = index)
  df['Volume'] = [random.randint(340,950) for x in range(len(df))]
  df
  </code></pre>
  <p><a href="https://i.stack.imgur.com/WO0XH.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/WO0XH.png" alt="" /></a></p>
  <pre><code>volume_breakdown = pd.Series({
      &quot;red&quot;:.5,
      &quot;blue&quot;:.3,
      &quot;oj&quot;:.2
  })
  volume_breakdown
  </code></pre>
  <p>Trying to multiply:</p>
  <pre><code>df * volume_breakdown
  </code></pre>
  <p><a href="https://i.stack.imgur.com/KcpeV.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/KcpeV.png" alt="enter image description here" /></a></p>
  <p>I know this is related to indexing, but is there a way to do this without using for loops and doing a concat/join/merge?</p>
  <p>Edit:
  Resolved with answer below,</p>
  <pre><code>pd.DataFrame(
      df[&quot;Volume&quot;].values.reshape((-1, 1)) * volume_breakdown.values, index = index, columns = volume_breakdown.index
  )
  </code></pre>