Python 基于字典键选择列值

Python 基于字典键选择列值,python,pandas,Python,Pandas,我有一个字典,我想从中决定我想选择的列值,有点像使用字典的if条件 import pandas as pd dictname = {'A': 'Select1', 'B':'Select2','C':'Select3'} DataFrame = pd.DataFrame([['A',1,2,3,4],['B',1,2,3,4],['B',1,3,4,5],['C',1,5,6,7]], columns=['Name','Score','Select1','Selec

我有一个字典,我想从中决定我想选择的列值,有点像使用字典的if条件

     import pandas as pd
     dictname = {'A': 'Select1', 'B':'Select2','C':'Select3'}
     DataFrame = pd.DataFrame([['A',1,2,3,4],['B',1,2,3,4],['B',1,3,4,5],['C',1,5,6,7]], columns=['Name','Score','Select1','Select2','Select3'])

因此,我想创建一个名为ChosenValue的新column,它根据列“Name”中的行值选择值,例如,如果“Name”中的行值为“a”,则ChosenValue应等于列“Select1”的值,如果“Name”中的行值为“B”,则ChosenValue应等于“Select2”的值,以此类推。我真的想要一些东西将它链接到字典“dictname”

使用
索引。获取索引器以获取索引列表。之后,您可以直接索引到基础numpy数组中

idx = df.columns.get_indexer(df.Name.map(dictname))
df['ChosenValue'] = df.values[np.arange(len(df)), idx]


如果您知道每个名字都在字典中,您可以使用
查找

In [104]: df["ChosenValue"] = df.lookup(df.index, df.Name.map(dictname))

In [105]: df
Out[105]: 
  Name  Score  Select1  Select2  Select3  ChosenValue
0    A      1        2        3        4            2
1    B      1        2        3        4            3
2    B      1        3        4        5            4
3    C      1        5        6        7            7

非常感谢你的“冷速”
In [104]: df["ChosenValue"] = df.lookup(df.index, df.Name.map(dictname))

In [105]: df
Out[105]: 
  Name  Score  Select1  Select2  Select3  ChosenValue
0    A      1        2        3        4            2
1    B      1        2        3        4            3
2    B      1        3        4        5            4
3    C      1        5        6        7            7