当有数据时,DataFrame hub_table sum 在某些列上返回零

问题描述 投票:0回答:1

我有一个如下所示的数据框:

|id|name|start_date|clicks|conversions|installs|downloads|
|--|----|----------|------|-----------|--------|-----------|
|101|India|2023-06-06|1|4|0|NaN|
|101|India|2023-06-06|2|5|0|NaN|
|101|India|2023-06-06|1|6|0|NaN|
|201|Kenya|2023-09-15|5|8|0|NaN|
|201|Kenya|2023-09-15|2|1|0|NaN|
|201|NaN|NaN|NaN|NaN|NaN|10|
|201|NaN|NaN|NaN|NaN|NaN|5|
|201|NaN|NaN|NaN|NaN|NaN|4|

我的代码是这样的:

    pivot_df = pd.pivot_table(
        df,
        index=['id','name','start_date'],
        aggfunc={'clicks': 'sum','conversions': 'sum','installs': 'sum', 'downloads': 'sum'})  

输出为:

|id|name|start_date|clicks|conversions|installs|downloads|
|--|----|----------|------|-----------|--------|-----------|
|101|India|2023-06-06|4|15|0|0|
|201|Kenya|2023-09-15|7|9|0|0|

输出是我预期得到的

|id|name|start_date|clicks|conversions|installs|downloads|
|--|----|----------|------|-----------|--------|-----------|
|101|India|2023-06-06|4|15|0|0|
|201|Kenya|2023-09-15|7|9|0|19|

转换总和为 0 而不是 19。我做错了什么?

python pandas dataframe pivot-table
1个回答
1
投票

您可能不需要

pivot_table
而是
groupby.agg
:

out = (df.groupby('id', as_index=False)
         .agg({'name': 'first',
               'start_date': 'first',
               'clicks': 'sum',
               'conversions': 'sum',
               'installs': 'sum',
               'downloads': 'sum'})
      )

输出:

    id   name  start_date  clicks  conversions  installs  downloads
0  101  India  2023-06-06     4.0         15.0       0.0        0.0
1  201  Kenya  2023-09-15     7.0          9.0       0.0       19.0
© www.soinside.com 2019 - 2024. All rights reserved.