python - 在 DataFrame 创建中使用先前列创建新列
问题描述
我知道如何基于 Pandas 中的另一列创建新列。我要做的是在创建 DataFrame 时基于另一列创建一个新列。这是我现在拥有的代码:
rng = np.random.default_rng()
number_of_trials = float('10E+06')
simulations = pd.DataFrame({'true_average': rng.beta(81, 219, size=int(number_of_trials))})
simulations = simulations.assign(hits=lambda x: rng.binomial(300, x.true_average, size =int(number_of_trials)))
如果可能的话,我不想做两行来在 DataFrame 中创建true_average
和hits
列,我想只在DataFrame
对象实例化中做。我搜索的所有内容都告诉我如何分两步完成,这很好,但我知道这在 R 中是可能的,所以只是想知道 Pandas 是否具有相同的功能。
我试图创建一个基于执行 lambda 函数访问该true_average
列的列,但它只是将函数本身存储为 Dataframe 中的值。
解决方案
我认为您可以使用用于创建原始列 (true_average) 的逻辑作为 rng.binomial 中的第二个参数:
rng = np.random.default_rng(seed=42)
number_of_trials = float('10E+06')
simulations = pd.DataFrame({'true_average': rng.beta(81, 219, size=int(number_of_trials)),
'hits': rng.binomial(300, (rng.beta(81, 219, size=int(number_of_trials))), size =int(number_of_trials))})
print(simulations)
产量:
true_average hits
0 0.248803 65
1 0.253768 99
2 0.242576 67
3 0.277595 78
4 0.335829 80
... ... ...
9999995 0.267265 66
9999996 0.308596 100
9999997 0.279287 88
9999998 0.247802 79
9999999 0.269566 67
[10000000 rows x 2 columns]
推荐阅读
- json - 菜单结构的 SQL 选择到 JSON
- r - 删除 stat_density_2d 的最低级别/bin?
- python - 如何对预训练模型的附加数据进行部分训练?
- flask - 烧瓶类型错误:validate_on_submit() 缺少 1 个必需的位置参数:'self'
- ios - 如何在 SwiftUI 中将视图与导航栏项目水平对齐
- algorithm - 矩阵求逆、行列式和伴随的空间复杂度
- sql - 使用 v('APP_USER') 作为 Oracle Apex 中列的默认值
- javascript - 页面自动刷新
- java - 需要帮助从 android studio 中的随机字母生成器广播 logcat
- javascript - Javascript 数组在另一个函数中不起作用(未报告错误)