首页 > 解决方案 > Dataframe.sample - 权重 - 如何使用它?

问题描述

我有这种情况: A 有一个 0.1348 的概率在一个名为treat_conv

现在,我正在尝试从原始数据框创建一个数据框,使用这个概率来带来一个指定的列。那可能吗?我正在尝试使用weights但没有成功。也许我用错了?

按照我的代码:

weights = np.array(treat_conv) #creating a array with treat_conv new_page_converted = df2.sample(n = treat_group.shape[0], weights=df2.converted(weights)) #creating new dataframe with the number of rows of treat_group and the column converted must have a 0.13 of chance to bring value 1

所以,如果我n单独使用,代码就可以工作。它创建一个具有正确行数的新数据框。但我无法获得正确的概率在列中带来一定数量的值 1 converted

我希望我的解释是不可理解的。谢谢!

标签: pythonnumpydataframe

解决方案


你可以做这样的事情

import pandas as pd
import numpy as np


df = pd.DataFrame(data=np.arange(0, 100, 1), columns=["SomeValue"])
selected = pd.DataFrame(data=np.random.choice(df["SomeValue"], int(len(df["SomeValue"]) * 0.13), replace=False),
                        columns=["SomeValue"])
selected["Trigger"] = 1
df = df.merge(selected, how="left", on="SomeValue")
df["Trigger"].fillna(0, inplace=True)

“df”是您的原始数据框。然后随机选择 13% 的值并添加一列指示它们已被选中。最后,将所有内容合并回您的原始数据框。


推荐阅读