我有一个很大的数据集,其中除其他外还有一个二进制变量:
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
答案 0 :(得分:0)
如果您真的只想在groupby
上has_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_year
,acc_reg_month
,year
和month
)。
如果您确实希望在其他所有has_acc_id_and_cus_id
内添加 ,则您的原始代码是正确的,但是一个或多个acc_reg_year
中可能缺少值,acc_reg_month
,year
和month
,当has_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)