这是输入:
df = pd.DataFrame({'keys': [('K0', 'K1'), ('K1', 'K2')],
'A': ['A0', 'A1']})
lookup_df = pd.DataFrame({'val': ['V1', 'V2', 'V3']},
index = ['K0', 'K1', 'K2'])
经过一些“加入”操作后,我希望向 df
添加一个新列,该列映射 df
中 keys
中的键> 到 lookup_df
中的 val
。
输出应该是:
pd.DataFrame({'keys': [('K0', 'K1'), ('K1', 'K2')],
'val': [('V0', 'V1'), ('V1', 'V2')],
'A': ['A0', 'A1']})
我能想到的一种方法是:
df['val'] = df['keys'].apply(lambda ks:
list(map(lambda k: lookup_df.loc[k].val, ks)))
还有其他更好的方法来实现这一目标吗?
最佳答案
更短并避免字符串操作:
df['val'] = df['keys'].apply(pd.Series).replace(lookup_df.val).apply(tuple)
关于python - Pandas .DataFrame : mappings a column of a list of keys to a column of the list of values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39429189/