gpt4 book ai didi

python - pandas 函数基于 dict 创建组合列

转载 作者:太空宇宙 更新时间:2023-11-03 14:39:17 25 4
gpt4 key购买 nike

我正在尝试在 pandas.DataFrame 中创建一个加权列

我有一个 python 字典,键是 pandas.DataFrame 列名,值是相应的权重。

我想创建一个新列,该列基于 dictionary 和引用 pandas.DataFrame 列值进行加权。

What is an efficient way to do this considering my dictionary configuration will change and contain "misconfiguration" ?

举个例子:

import pandas as pd
import numpy as np
weights = {'IX1' : 0.3, 'IX2' : 0.2, 'IX3' : 0.4, 'IX4' : 0.1}
np.random.seed(0)
df = pd.DataFrame(np.random.randn(10, 3), columns=['IX1', 'IX2', 'IX3'])

##Desired output --- manually combine
df['Composite'] = df['IX1']*0.3 + df['IX2']*0.2 + df['IX3']*0.4

即使 pandas.DataFrame 缺少列,我也希望代码仍然运行

最佳答案

首先为字典中的列和键的相同值创建变量 Index.intersection ,然后选择此列并将矩阵乘法与 dot 一起使用使用 Series from dict 仅针对相同的列进行过滤:

df['Composite'] = df['IX1']*0.3 + df['IX2']*0.2 + df['IX3']*0.4

cols = df.columns.intersection(weights.keys())
df['Composite1'] = df[cols].dot(pd.Series(weights)[cols])
print (df)
IX1 IX2 IX3 Composite Composite1
0 1.764052 0.400157 0.978738 1.000742 1.000742
1 2.240893 1.867558 -0.977278 0.654868 0.654868
2 0.950088 -0.151357 -0.103219 0.213468 0.213468
3 0.410599 0.144044 1.454274 0.733698 0.733698
4 0.761038 0.121675 0.443863 0.430192 0.430192
5 0.333674 1.494079 -0.205158 0.316855 0.316855
6 0.313068 -0.854096 -2.552990 -1.098095 -1.098095
7 0.653619 0.864436 -0.742165 0.072107 0.072107
8 2.269755 -1.454366 0.045759 0.408357 0.408357
9 -0.187184 1.532779 1.469359 0.838144 0.838144

关于python - pandas 函数基于 dict 创建组合列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54691337/

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