python - 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
。
我希望我的解释是不可理解的。谢谢!
解决方案
你可以做这样的事情
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% 的值并添加一列指示它们已被选中。最后,将所有内容合并回您的原始数据框。
推荐阅读
- android - 带有 androidx 的 Material OutlinedBox 提示
- reactjs - 反应:组件属性未正确存储我想要的数据(来自查询)
- vb.net - 如何隐藏 DataGridView 中的重复行?
- typescript - 如何将索引类型与交集类型结合起来
- tensorflow - TensorFlow2 中的 tf.nn.ctc_beam_search_decoder() 不支持 GPU 吗?
- ios - Swift:我可以让下拉菜单保持可点击状态吗
- git - 如何使用 git log 使用 parent #1 来生成补丁
- java - Java 方法重载 - 两个列表
- sql-server - 为什么字符串数据列的旋转与 row_number 一起使用?
- mongodb - MongoDB的自定义排序功能