![](/img/trans.png)
[英]Pandas subset randomly selected number of rows from dataframe based on values in another data
[英]Randomly selecting a subset of rows from a pandas dataframe based on existing column values
我有一个包含多列的 dataframe,我想根据特定列的值随机 select 相同数量的行。 我想过使用 df.groupby['...'] 但它没有用。 这是一个例子:
假设我想随机 select 每个 GroupID 一行,我该如何实现? 例如,假设我 select 每个 GroupID 一个随机行,结果将产生以下结果:
这样它就可以根据 GroupID 中的值输出一行。 例如,假设行按 GroupID(从升序到降序)排序,然后是 select 与 GroupID 1、2、3 相关的行中的“n”行,依此类推。 任何信息肯定会有帮助。
另外,如果我需要 select 每个 GroupID 的特定行数(假设 GroupID=100 为 1 行,GroupID=200 为 4 行,等等),有什么想法吗?
[更新] 我使用下面的推荐答案进行了小幅修改或扩展,以使用以下方法为每个组选择性地选择特定的 n 值:
samples = []
values = [1, 1, 2, ...]
index = 0
for group in df.GroupID.unique():
s = df.loc[df.GroupID== group].sample(n=values[index ]).reset_index(drop=True)
samples.append(s)
index = index + 1
sample = pd.concat(samples, axis=0)
我希望这个代码片段对你有用
samples = []
for group in df.GroupID.unique():
s = df.loc[df.GroupID== group].sample(n=1).reset_index(drop=True)
samples.append(s)
sample = pd.concat(samples, axis=0)
该代码将从该子组中获取每个“GroupID”和样本观察。 您可以连接所需样本的子样本(具有一个 GroupID)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.