首页 > 解决方案 > Pandas-pivot 数据农场

问题描述

我有一个这样的数据框:

         Account                   Product     line_item_product_code             cost
0         AU-LOG                   COMMON              AWSCloudTrail              1
1         AU-STG                   prod1                    AWSGlue               2
2         AU-PRD                   prod2            AWSQueueService               3
3         AU-MGT                   prod3          AWSSecretsManager               4
3         AU-LOG                   prod3          AWSSecretsManager               4

我想像这样可视化数据框:

Account Product   AWSCloudTrail   AWSGlue    AWSQueueService   AWSSecretsManager  s3  KMS  
AU-LOG  COMMON    1                 0           0                   0             0    0
AU-LOG  prod3     0                 0           0                   4             0    0
AU-STG  prod1     0                 2           0                   0             0    0
AU-PRD  prod2     0                 0           3                   0             0    0
AU-MGT  prod3     0                 0           0                   4             0    0

如何使用熊猫实现这一目标?

试过这个,没有运气。

df1 = pd.pivot_table(
        df, values='cost', index=[
            'Account', 'Product'], columns='line_item_product_code',
        fill_value=0)

标签: pythonpython-3.xpandasdataframe

解决方案


您可以使用.pivot(),如下所示:

df1 = (df.pivot(['Account', 'Product'], 'line_item_product_code', 'cost')
         .fillna(0, downcast='infer')
         .rename_axis(columns=None)
      ).reset_index()

或使用.pivot_table(),如下所示:

df1 = (df.pivot_table(index=['Account', 'Product'], columns='line_item_product_code', values='cost', fill_value=0)
         .rename_axis(columns=None)
      ).reset_index()

结果:

print(df1)


  Account Product  AWSCloudTrail  AWSGlue  AWSQueueService  AWSSecretsManager
0  AU-LOG  COMMON              1        0                0                  0
1  AU-LOG   prod3              0        0                0                  4
2  AU-MGT   prod3              0        0                0                  4
3  AU-PRD   prod2              0        0                3                  0
4  AU-STG   prod1              0        2                0                  0

推荐阅读