【发布时间】:2021-10-26 20:13:56
【问题描述】:
我正在尝试从以下数据框 (df) 为不同位置创建数据透视表:
| Location | Category | Status | Price |
|---|---|---|---|
| 1 | Furniture | New | $100 |
| 1 | Furniture | Old | $50 |
| 2 | Office Supplies | New | $200 |
| 1 | Furniture | New | $100 |
| 1 | Office Supplies | New | $300 |
| 1 | Office Supplies | Old | $150 |
首先,我使用代码过滤了数据框以将位置 1 和 2 分开:
df1 = df[df['Location'] == 1]
df2 = df[df['Location'] == 2]
接下来我使用了标准的 pandas 数据透视表函数:
pd.pivot_table(df1, values='Price', index='Status', columns='Category', aggfunc=np.sum)
pd.pivot_table(df2, values='Price', index='Status', columns='Category', aggfunc=np.sum)
所以我有以下两个数据透视表作为输出:
位置 1:
| Status | Furniture | Office Supplies |
|---|---|---|
| New | $200 | $300 |
| Old | $50 | $150 |
位置 2:
| Status | Office Supplies |
|---|---|
| New | $200 |
但是,我希望位置 2 的数据透视表包含所有可能的类别和状态,如果它们不存在,则为 0。总而言之,我想要位置 2 的以下数据透视表:
位置 2:
| Status | Furniture | Office Supplies |
|---|---|---|
| New | $0 | $200 |
| Old | $0 | $0 |
我已经查看了 pivot_table() 函数的所有选项,但到目前为止还没有找到解决这个问题的方法。
【问题讨论】:
标签: python pandas dataframe pivot-table