如何在Pandas DataFrame中随机选取5行并从原表移除
Pandas随机选取指定行数并从原DataFrame移除的实现方法
要实现从Pandas DataFrame中随机选取5行存入新DataFrame,同时从原DataFrame中移除这些行,有两种简洁的实现方式:
方法一:使用sample() + drop()
这是最直接的方式,先随机采样,再通过索引删除原DF中的对应行:
import pandas as pd # 示例原DataFrame df = pd.DataFrame({ 'A': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 'B': ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'] }) # 随机选取5行,存入新DataFrame sampled_rows = df.sample(n=5) # 从原DataFrame中移除选中的行 df = df.drop(sampled_rows.index)
方法二:使用布尔索引(避免直接修改原DataFrame)
如果你想保留原DataFrame的完整副本,可通过布尔掩码筛选出剩余行:
# 基于采样行的索引生成掩码 mask = df.index.isin(sampled_rows.index) # 获取移除采样行后的剩余数据 remaining_df = df[~mask]
额外提示
- 如果需要固定随机结果(方便复现),可以在
sample()中添加random_state参数,比如df.sample(n=5, random_state=42) - 如果原DataFrame存在重复索引,
drop()可能会误删多行,此时优先使用布尔索引的方式更稳妥
内容的提问来源于stack exchange,提问作者ariankazemi
相关产品推荐
相关产品推荐

