对 Pandas 在 groupby 中的行为感到困惑

用户8270077

我有一个大型数据集,其中有一个二进制变量:

Transactions['has_acc_id_and_cus_id'].value_counts()
1    1295130
0     823869
Name: has_acc_id_and_cus_id, dtype: int64

当我分组这个数据集 --Transactions-- 使用这个特定的二元变量作为一个分组变量时,我得到一个分组的数据集 --df100-- 只有上述二元变量的一个级别。

df100 = Transactions.groupby(['acc_reg_year', 'acc_reg_month', 'year', 'month',\
                              'has_acc_id_and_cus_id'])[['net_revenue']].agg(['sum', 'mean', 'count'])

df100['has_acc_id_and_cus_id'].value_counts()
1    1421
Name: has_acc_id_and_cus_id, dtype: int64
松弛线

如果您真的想继续groupbyhas_acc_id_and_cus_id那么您想要的命令将是......

df100 = Transactions[['has_acc_id_and_cus_id', 'net_revenue']].groupby(['has_acc_id_and_cus_id']).agg(['sum', 'mean', 'count'])

这个子集只是你想用 ( has_acc_id_and_cus_id)总结的变量和你想总结的变量 ( net_revenue)...

Transactions[['has_acc_id_and_cus_id', 'net_revenue']]

...然后您将这些按has_acc_id_and_cus_id...分组

Transactions[['has_acc_id_and_cus_id', 'net_revenue']].groupby('has_acc_id_and_cus_id')

...然后再应用该agg()函数以获取所需的统计信息。

你犯了错,根据您在总结的明确目标has_acc_id_and_cus_id单纯,是有你被分组其他四个变量(acc_reg_yearacc_reg_monthyearmonth)。

如果你确实想要通过总结做has_acc_id_and_cus_id 所有的人,然后你原来的代码是正确的,但也许有一个缺失值以上的acc_reg_yearacc_reg_monthyearmonthhas_acc_id_and_cus_id == 0,因此请检查您的数据...

Transactions[Transactions[`has_acc_id_and_cus_id`] == 0][[`acc_reg_year`, `acc_reg_month`, `year`, `month`]].head(100)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章