从多个相同名称的数据框条目中选择随机行

时间:2020-08-18 14:34:00

标签: python dataframe

我有一个这样的数据框

data = [['bob', 1], ['joe', 4], ['joe', 1], ['bob', 3], ['joe', 7]]
df = pd.DataFrame(data, columns=['name', 'score'])
print(df)

看起来像

  name  score
0  bob      1
1  joe      4
2  joe      1
3  bob      3
4  joe      7

我想为每个名称选择一个随机的(不仅仅是使用第一个!)条目,然后删除其余的。

结果可能是

  name  score
2  joe      1
3  bob      3

  name  score
0  bob      1
4  joe      7

我猜有一种Python方法吗?

2 个答案:

答案 0 :(得分:4)

按名称分组,然后从每个分组中抽取一行:

df.groupby('name').apply(lambda x: x.sample(1)).reset_index(drop=True)

reset_index部分将摆脱由groupby创建的索引。

答案 1 :(得分:0)

如果您可以访问新版的熊猫,> = 1.1.0,则该功能是pandas.core.groupby.DataFrame.sample内置的

df.groupby('name').sample(n=1)
相关问题