<p>我会在<code>name</code>、<code>date</code>和<code>category</code>上使用groupby,并使用<code>sum</code>聚合(在<code>A</code>和<code>B</code>上求和)。但这会提供额外的列,因为日期为<code>1/4/2020</code>和<code>1/5/2020</code>的行不会消失,而是总和为1</p>
<p>代码如下:</p>
<pre><code>import pandas as pd
df = pd.DataFrame({'name': ['W', 'W', 'Y', 'Y'],
'date': ['1/1/2020', '1/2/2020', '1/3/2020', '1/4/2020 '],
'A': [1, 1, 1, 1],
'B': [1, 1, 1, 1],
'category': ['home', 'home', 'garden', 'garden']})
df2 = pd.DataFrame({'name': ['W', 'W', 'Y', 'Y'],
'date': ['1/1/2020', '1/2/2020', '1/3/2020', '1/5/2020 '],
'A': [2, 1, 1, 1],
'B': [2, 1, 1, 1],
'category': ['home', 'home', 'garden', 'garden']})
df3 = pd.concat([df, df2]).groupby(by=['name', 'date', 'category']).sum()
</code></pre>
<p>这将为您提供:</p>
<pre><code> A B
name date category
W 1/1/2020 home 3 3
1/2/2020 home 2 2
Y 1/3/2020 garden 2 2
1/4/2020 garden 1 1
1/5/2020 garden 1 1
</code></pre>
<p>然后,如果不想看到sum=1的行,可以对<code>A</code>或/和<code>B</code>的值进行筛选</p>
<p>希望这有帮助</p>