python - 如何在 groupby() 之后查找非唯一行数
问题描述
我有一个df
具有两个特征的数据框:ID_owner
, ID_phone
,我必须找到:
- 有多少人拥有的不仅仅是
n
手机。 - 多个所有者共享的电话,
ID_phone
拥有一个或多个ID_owner
.
为了回答第一个问题,我尝试过:
df.groupby('`ID_owner`')['`ID_phone'].nunique().to_frame()
这似乎不起作用,因为我需要ID_owner
在分组后计算每个重复行的数量。我在第二个问题中遇到了同样的问题。
我想知道是否存在pandas
针对此类问题的特定方法或功能。
第一个问题的输出应该是一个包含两列的数据框:一列显示 ,ID_owner
第二列显示拥有的智能手机数量ID_owner
。
解决方案
尽管您似乎想保留聚合表,但您似乎过早地对表进行了切片。要回答您的第一个问题,以下代码将起作用。
n = 2
(df.groupby('ID_owner').agg({'ID_phone': pd.Series.nunique}).query('ID_phone > @n').shape[0]
要回答您的第二个问题,您可以反转上述查询中的 ID,更改 n,然后选择“ID_phone”列。
推荐阅读
- flutter - 如何在 Flutter/Dart 中合并三个列表?
- python - 'PipelineModel' 对象没有属性 'predict'
- text-classification - 模型的特征数量必须与输入相匹配。模型 n_features 为 51,输入 n_features 为 55 错误与 BERT 标记器
- javascript - U/user 不是构造函数
- php - React 如何在 PHP 中读取会话 SET
- reactjs - 无法使用提供商中的商店
- aws-codepipeline - 我们如何在 S3 存储桶中创建发布代码的 Zip 文件夹
- ansible - 查找变量并从 ansible vault 动态更改它们
- flutter - Flutter 小部件预览
- csv - 是否可以在 Markdown 中将 csv 文件显示为表格?