<p>为了创建上面提到的数据帧,我们需要应用两个操作</p>
<ol>
<li><p>字符串<strong>。替换<strong></p>
</li>
<li><p><strong>.groupby</strong>加总,即<strong>.sum()</strong>和<strong>.reset\u index()</strong></p>
</li>
<li><p>字符串替换方法用于替换字符串中的字符,通过该方法可以将字符串即F31、F32转换为F3</p>
<p>.替换('F31','F3')</p>
<p>.替换('F32','F3')</p>
</li>
<li><p><strong>.groupby</strong>方法用于根据给定的约束分离数据。此方法将数据分为可执行操作的块。这里,我们需要根据多列对数据进行分组</p>
</li>
</ol>
<p>然后,我们需要根据<strong>'CAT'</strong>列聚合值之和列,即首先按“产品”分组,然后按“日期”分组,然后按“CAT”分组。因此,我们使用<em>.sum()</em></p>
<p>这之后的结果将是一个分组对象,但要将其转换为<strong>数据帧</strong>,我们需要使用<strong>.reset_index()</strong>,此方法允许根据输入条件列使用相应的值填充列</p>
<pre><code>Data.groupby(['Product','Date','CAT'])['Value'].sum().reset_index(name='Value')
</code></pre>
<p>代码片段如下所示:</p>
<pre><code>Product = ['Product A','Product A','Product A','Product A','Product A','Product A','Product A','Product A','Product B','Product B','Product B','Product B','Product B','Product B','Product B','Product B']
Date = ['Apr','Apr','Apr','Apr','May','May','May','May','Apr','Apr','Apr','Apr','May','May','May','May']
CAT = ['F31','F32','F45','F46','F31','F32','F45','F46','F31','F32','F45','F46','F31','F32','F45','F46']
Value = [100, 200,300,400,200,300,400,500,200,300,400,500,600,700,800,900]
# Creating Data Frame
Data = pd.DataFrame({'Product':Product,'Date':Date,'CAT':CAT,'Value':Value})
# String Replace
Data['CAT'] = Data['CAT'].replace('F31','F3')
Data['CAT'] = Data['CAT'].replace('F32','F3')
# Group By Operation
DataG = pd.DataFrame(Data.groupby(['Product','Date','CAT'])['Value'].sum().reset_index(name='Value'))
</code></pre>
<p>应用上述操作前的数据</p>
<p><a href="https://i.stack.imgur.com/BsfQa.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/BsfQa.jpg" alt="Data Before applying above operations"/></a></p>
<p>应用上述操作后的数据</p>
<p><a href="https://i.stack.imgur.com/akavF.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/akavF.jpg" alt="Data After applying above operations"/></a></p>