如何基于由另一列指示的数组元素的值创建列?

2024-05-06 18:27:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个大数据帧,我想根据另一列指示的数组位置创建一列。在下面的示例中,我想创建一个基于param数组分配值的列,其中位置由列“type”指示

>>> import pandas as pd
>>> d = {'type': [3, 4, 1, 2, 5]}
>>> df = pd.DataFrame(data=d)
>>> param = [0.3, 0.4, 0.1, 0.25, 0.75]
>>> df
   type
0   2
1   3
2   0
3   1
4   4

预期的结果将是

>> df
   type  outcome
0   2     0.10
1   3     0.25
2   0     0.30
3   1     0.40
4   4     0.75

如果不将帧转换为数组并通过循环获得结果,我想不出一个好的方法来实现它。我曾尝试为类型创建虚拟变量并执行矩阵乘法,但由于我的数据中有100多个类型,这将大大增加计算时间。任何帮助都将不胜感激


2条回答
df['outcome'] = [param[i-1] for i in df.type.values]

如果没有任何for循环,您可以执行以下操作:

df2 = pd.DataFrame(param)
df = df.set_index('type').join(df2, how='right').sort_values([0])

相关问题 更多 >