gpt4 book ai didi

python - 如何对大型数据集进行多线程大量 pandas 数据帧选择调用

转载 作者:行者123 更新时间:2023-12-01 09:28:18 24 4
gpt4 key购买 nike

df 是一个包含超过 1200 万行未排序的数据帧。每行都有一个组 ID。

最终目标是为每个唯一的 GROUP ID 随机选择 1 行,从而填充名为 SELECTED 的新列,其中 1 表示选定,0 表示相反

可能有 5000 多个唯一的组 ID。寻求比以下更好更快的解决方案,潜在的多线程解决方案?

for sec in df['GROUP'].unique():
sz = df.loc[df.GROUP == sec, ['SELECTED']].size
sel = [0]*sz
sel[random.randint(0,sz-1)] = 1
df.loc[df.GROUP == sec, ['SELECTED']] = sel

最佳答案

您可以尝试矢量化版本,如果您有很多类,这可能会加快速度。

import pandas as pd

# get fake data
df = pd.DataFrame(pd.np.random.rand(10))
df['GROUP'] = df[0].astype(str).str[2]

# mark one element of each group as selected
df['selected'] = df.index.isin( # Is current index in a selected list?
df.groupby('GROUP') # Get a GroupBy object.
.apply(pd.Series.sample) # Select one row from each group.
.index.levels[1] # Access index - in this case (group, old_id) pair; select the old_id out of the two.
).astype(pd.np.int) # Convert to ints.

请注意,如果存在重复索引,这可能会失败。

关于python - 如何对大型数据集进行多线程大量 pandas 数据帧选择调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50184373/

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