Python 基于字典键选择列值
我有一个字典,我想从中决定我想选择的列值,有点像使用字典的if条件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
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