<p>假设您正在寻找一种通用方法来创建<code>groupby</code>中的所有组合,您可以使用<a href="https://docs.python.org/3.8/library/itertools.html#itertools.combinations" rel="nofollow noreferrer">itertools.combinations</a>:</p>
<pre><code>from itertools import combinations
col_gr = ['name', 'city']
col_sum = ['dollars']
all_groups = pd.concat( [ df1.groupby(by=list(cols))[col_sum].sum().reset_index()\
.assign(**{col:'all' for col in col_gr if col not in cols})
for r in range(len(col_gr), 0, -1) for cols in combinations(col_gr, r) ]
+ [ pd.DataFrame({**{col:'all' for col in col_gr},
**{col: df1[col].sum() for col in col_sum},}, index=[0])],
axis=0, ignore_index=True)
print (all_groups)
name city dollars
0 Alice Seattle 1
1 Bob Seattle 2
2 Mallory Portland 2
3 Mallory Seattle 1
4 Alice all 1
5 Bob all 2
6 Mallory all 3
7 all Portland 2
8 all Seattle 4
9 all all 6
</code></pre>