【发布时间】:2021-03-07 05:51:27
【问题描述】:
我的数据已经汇总并分组到名为 df 的数据框中:
| id | segment | region | points |
|----|---------|----------|--------|
| 90 | Gold | APAC | 21 |
| 90 | Silver | EMEA | 34 |
| 90 | Bronze | AMERICAS | 564 |
| 90 | Gold | EMEA | 3939 |
| 90 | Silver | Americas | 989 |
| 90 | Gold | EMEA | 43 |
| 90 | Silver | APAC | 13 |
| 90 | Bronze | AMERICAS | 567 |
我想将segment 和region 都旋转到列,然后合计这些列的分数。根据上面的输入,输出将如下所示:
| id | Gold | Silver | Bronze | APAC | EMEA | AMERICAS |
|----|------|--------|--------|------|------|----------|
| 90 | 4003 | 1036 | 1131 | 34 | 4016 | 2120 |
到目前为止,我尝试将我的数据框转换为 Pandas,然后使用内置的 pivot_table 函数。
import pandas as pd
df_pd = df.toPandas()
pd.pivot_table(df_pd, values = 'points', index=['id'], columns = ['segment', 'region']).reset_index()
代码有效,但输出不如预期。我没有将每个region 和segment 作为一列,而是得到两行列。在两行列中,region 似乎是segment 的子组。见下文(注意,由于样本数据中使用了随机数,数字不匹配,我更关心形状):
【问题讨论】:
标签: python-3.x pandas pivot pivot-table transpose