Pandas 将具有多个值的字典映射到 Dataframe

问题描述 投票:0回答:1

我有以下数据框:

data = [['BALANCED', 'Corp EUR'], ['YIELD', 'Corp USD'], ['GROWTH', 'HG CHF']]
df = pd.DataFrame(data, columns=['STRATEGY', 'ASSET_CLASS']
df

    STRATEGY    ASSET_CLASS
0   BALANCED    Corp EUR
1   YIELD       Corp USD
2   GROWTH      HG CHF

我的目标是根据“策略”列中的值从具有多个值的字典中分配特定值。包含不同资产类别的字典如下所示:

my_dict = {'HG CHF': [5, 2, 3, 4],
           'Corp EUR': [4, 6, 8, 7],
           'Corp USD': [9, 7.5, 5.3, 6],
          }
my_dict

{'HG CHF': [5, 2, 3, 4],
 'Corp EUR': [4, 6, 8, 7],
 'Corp USD': [9, 7.5, 5.3, 6]}

在字典中,每个值都描述了一个特定的策略。在这种情况下,YIELD 包括所有第二个值,BALANCED 包括所有第三个值,GROWTH 包括所有第四个值。本质上,我想要获得的是以下输出:

   STRATEGY ASSET_CLASS  TARGET
0  BALANCED    Corp EUR     8.0
1     YIELD    Corp USD     7.5
2    GROWTH      HG CHF     4.0

如何正确告诉Python要访问字典中的哪个值?以下命令映射所有值:

df['TARGET'] = df['ASSET_CLASS'].map(my_dict)

   STRATEGY ASSET_CLASS            TARGET
0  BALANCED    Corp EUR      [4, 6, 8, 7]
1     YIELD    Corp USD  [9, 7.5, 5.3, 6]
2    GROWTH      HG CHF      [5, 2, 3, 4]

任何建议都非常感谢!非常感谢!

python pandas dataframe dictionary mapping
1个回答
0
投票

我会基于

实现功能

产量包括所有第二个值,平衡所有第三个值和增长 所有第四个值,

pandas.DataFrame.apply
一起使用,如下

import pandas as pd


def get_target_value(row):
    if row.STRATEGY == "YIELD":
        return row.TARGET[1]
    if row.STRATEGY == "BALANCED":
        return row.TARGET[2]
    if row.STRATEGY == "GROWTH":
        return row.TARGET[3]


data = [['BALANCED', 'Corp EUR'], ['YIELD', 'Corp USD'], ['GROWTH', 'HG CHF']]
df = pd.DataFrame(data, columns=['STRATEGY', 'ASSET_CLASS'])
my_dict = {'HG CHF': [5, 2, 3, 4],
           'Corp EUR': [4, 6, 8, 7],
           'Corp USD': [9, 7.5, 5.3, 6],
          }
df['TARGET'] = df['ASSET_CLASS'].map(my_dict)
df['TARGET'] = df.apply(get_target_value,axis=1)
print(df)

提供输出

   STRATEGY ASSET_CLASS  TARGET
0  BALANCED    Corp EUR     8.0
1     YIELD    Corp USD     7.5
2    GROWTH      HG CHF     4.0
© www.soinside.com 2019 - 2024. All rights reserved.