2014-10-02 167 views
2

我有一个熊猫据帧,例如:新熊猫据帧列

colA  colB 
code1  num 
code2  num 
code3  num 
code4  num 
code5  num 

我也有一个Python词典,例如:

py_dict = {'code1': [val1, val2, val3, val4, val5], 'code2': [val1, val2, val3, val4, val5], 'code3': [val1, val2, val3, val4, val5], 'code4': [val1, val2, val3, val4, val5], 'code5': [val1, val2, val3, val4, val5]} 

我想什么do是在熊猫数据框中创建一个新列,将其称为colC,它使用colA中的键匹配py_dict中相应的键/列表并返回第三个列表值val3。我已经尝试了dataframe.from_dict()和dataframe.update(),但不知道如何正确索引字典。

回答

1

首先创建一个仅包含你从每个列表中选择所需值的新字典:

new_dict = {k: v[2] for k, v in py_dict.iteritems()} 

然后你可以使用在返回的V A字符串值Series.map

df['new_col'] = df.colA.map(new_dict) 
+0

任何建议[2]这个例子? – acmyers 2014-10-03 03:43:04

+0

@ user2920457:你是什么意思?这个问题没有提及什么类型的'val2'。如果它已经是一个字符串,则无事可做。如果你想把'v [2]'转换成一个字符串,那么在'new_dict'理解中执行'str(v [2])'。 – BrenBarn 2014-10-03 03:51:32

+0

你是对的。错误是使用错误的df列名map(),我的不好。 – acmyers 2014-10-03 04:19:12