如何有效地使用字典和键列表来查找值列表
How to efficiently use a dictionary and a list of keys to find a list of values
例如,我有一个 pandas 数据框 df
是这样的:
A B
0 12 ['key1', 'key2']
1 23 ['key3', 'key4']
我有一本这样的字典 dic
:
{'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}
并且我想生成一个列 df['C']
使得其中列表中的每个元素都是与 df['B']
:
列表中的键对应的值
A B C
0 12 ['key1', 'key2'] ['value1', 'value2']
1 23 ['key3', 'key4'] ['value3', nan]
我怎样才能以高效的方式实现这一点?谢谢!
一种方法是使用函数
def check_dictionary(list_of_keys):
return [dic[x] for x in list_of_keys if x in dic]
df['C']=df['B'].apply(check_dictionary)
另一种方法是使用 lambda:
df['C']=df['B'].apply(lambda row: [dic[key] for key in row if x in dic]
例如,我有一个 pandas 数据框 df
是这样的:
A B
0 12 ['key1', 'key2']
1 23 ['key3', 'key4']
我有一本这样的字典 dic
:
{'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}
并且我想生成一个列 df['C']
使得其中列表中的每个元素都是与 df['B']
:
A B C
0 12 ['key1', 'key2'] ['value1', 'value2']
1 23 ['key3', 'key4'] ['value3', nan]
我怎样才能以高效的方式实现这一点?谢谢!
一种方法是使用函数
def check_dictionary(list_of_keys):
return [dic[x] for x in list_of_keys if x in dic]
df['C']=df['B'].apply(check_dictionary)
另一种方法是使用 lambda:
df['C']=df['B'].apply(lambda row: [dic[key] for key in row if x in dic]