Pandas如何抽取1000个唯一用户的全部行数据?
抽取1000个唯一用户及其全部行数据的解决方案
需求
从数据集中随机抽取1000个唯一用户,并提取这些用户的所有行数据。
输入数据示例
| User_ID | Ship Date |
|---|---|
| A454 | 8/2/2019 |
| A454 | 9/2/2019 |
| G658 | 9/2/2019 |
| G658 | 9/2/2019 |
原代码问题
你之前的代码df['User_ID'].sample(n=1000, random_state=1)只能拿到1000个User_ID样本,既无法关联到这些用户的全部行数据,还可能因为原数据中User_ID重复,抽到同一个用户多次,达不到“1000个唯一用户”的要求。
解决代码
import pandas as pd # 第一步:从唯一用户集合中抽样1000个ID sampled_user_ids = df['User_ID'].drop_duplicates().sample(n=1000, random_state=1).tolist() # 第二步:筛选出这些用户的所有行数据 result_df = df[df['User_ID'].isin(sampled_user_ids)]
代码说明
drop_duplicates():先清洗User_ID列的重复值,确保抽样源是无重复的用户集合;sample(n=1000, random_state=1):从唯一用户中随机选取1000个,random_state=1保证每次运行结果一致,方便复现;isin(sampled_user_ids):过滤原DataFrame,只保留User_ID在抽样列表中的所有行,这样就能拿到每个抽样用户的全部数据。
验证示例
如果在示例数据中抽样选中A454,result_df会包含该用户的两行数据,完全符合需求。
内容的提问来源于stack exchange,提问作者shockwave
相关产品推荐
相关产品推荐

