【发布时间】:2019-02-16 09:47:06
【问题描述】:
我正在尝试创建一个数据透视表,除了一般总计之外,每个行级别之间还有一个小计。
我创建了我的 df。
import pandas as pd
df = pd.DataFrame(
np.array([['SOUTH AMERICA', 'BRAZIL', 'SP', 500],
['SOUTH AMERICA', 'BRAZIL', 'RJ', 200],
['SOUTH AMERICA', 'BRAZIL', 'MG', 150],
['SOUTH AMERICA', 'ARGENTINA', 'BA', 180],
['SOUTH AMERICA', 'ARGENTINA', 'CO', 300],
['EUROPE', 'SPAIN', 'MA', 400],
['EUROPE', 'SPAIN', 'BA', 110],
['EUROPE', 'FRANCE', 'PA', 320],
['EUROPE', 'FRANCE', 'CA', 100],
['EUROPE', 'FRANCE', 'LY', 80]], dtype=object),
columns=["CONTINENT", "COUNTRY","LOCATION","POPULATION"]
)
之后我创建了如下所示的数据透视表
table = pd.pivot_table(df, values=['POPULATION'], index=['CONTINENT', 'COUNTRY', 'LOCATION'], fill_value=0, aggfunc=np.sum, dropna=True)
table
为了做小计,我开始总结 CONTINENT 级别
tab_tots = table.groupby(level='CONTINENT').sum()
tab_tots.index = [tab_tots.index, ['Total'] * len(tab_tots)]
并与我的第一个枢轴连接以获得小计。
pd.concat([table, tab_tots]).sort_index()
我怎样才能像第一个表一样获得按级别分隔的值?
我没有找到办法。
【问题讨论】:
-
看看这个 SO 帖子stackoverflow.com/a/52209189/6361531。
标签: python-3.x pandas pivot-table subtotal