gpt4 book ai didi

python - 每个唯一值采样一条记录( Pandas , python )

转载 作者:太空狗 更新时间:2023-10-29 18:16:39 24 4
gpt4 key购买 nike

我使用 python-pandas 数据框,我有一个包含用户及其数据的大型数据框。每个用户可以有多行。我想为每个用户采样 1 行。我当前的解决方案似乎效率不高:

df1 = pd.DataFrame({'User': ['user1', 'user1', 'user2', 'user3', 'user2', 'user3'],
'B': ['B', 'B1', 'B2', 'B3','B4','B5'],
'C': ['C', 'C1', 'C2', 'C3','C4','C5'],
'D': ['D', 'D1', 'D2', 'D3','D4','D5'],
'E': ['E', 'E1', 'E2', 'E3','E4','E5']},
index=[0, 1, 2, 3,4,5])

df1
>> B C D E User
0 B C D E user1
1 B1 C1 D1 E1 user1
2 B2 C2 D2 E2 user2
3 B3 C3 D3 E3 user3
4 B4 C4 D4 E4 user2
5 B5 C5 D5 E5 user3

userList = list(df1.User.unique())
userList
> ['user1', 'user2', 'user3']

我循环遍历唯一用户列表并为每个用户采样一行,将它们保存到不同的数据框中

usersSample = pd.DataFrame() # empty dataframe, to save samples
for i in userList:
usersSample=usersSample.append(df1[df1.User == i].sample(1))

> usersSample
B C D E User
0 B C D E user1
4 B4 C4 D4 E4 user2
3 B3 C3 D3 E3 user3

有没有更有效的方法来实现它?我真的很想:1)避免附加到数据框用户示例。这是一个逐渐增长的对象,它会严重影响性能。并且 2) 避免一次循环访问一个用户。有没有一种方法可以更有效地对每个用户进行 1 次采样?

最佳答案

这就是你想要的:

df1.groupby('User').apply(lambda df: df.sample(1))

enter image description here

没有额外的索引:

df1.groupby('User', group_keys=False).apply(lambda df: df.sample(1))

enter image description here

关于python - 每个唯一值采样一条记录( Pandas , python ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38390242/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com