首页 > 解决方案 > 根据字典键将字典值分配给 DataFrame 列

问题描述

我正在寻找数据帧中一列的字典,其中map字典中的 等于该数据帧中的第二列valuekey

例如:

如果我的字典是:

dict = {'abc':'1/2/2003', 'def':'1/5/2017', 'ghi':'4/10/2013'}

我的数据框是:

      Member    Group      Date
 0     xyz       A         np.Nan
 1     uvw       B         np.Nan
 2     abc       A         np.Nan
 3     def       B         np.Nan
 4     ghi       B         np.Nan

我想得到以下信息:

      Member    Group      Date
 0     xyz       A         np.Nan
 1     uvw       B         np.Nan
 2     abc       A         1/2/2003
 3     def       B         1/5/2017
 4     ghi       B         4/10/2013

注意:dictdf 中的“成员”下没有所有值。np.Nan如果我映射,我不希望将这些值转换为。所以我想我必须做一个fillna(df['Member'])来留住他们?


使用 dict 重新映射 pandas 列中的值不同,保留 NaN映射 dict 中的值以替换包含与 dict 中的键等效的 a 值的列。这是关于根据键值将 dict 值添加到 DataFrame 中的 ANOTHER 列。

标签: pythonpandasdataframedictionary

解决方案


您可以使用df.apply来解决您的问题,d您的字典在哪里。

df["Date"] = df["Member"].apply(lambda x: d.get(x))

这段代码的作用是获取Member列中的每个值,并在您的字典中查找该值。如果在字典中找到该值,则相应的字典值将填充该列。如果该值不在字典中,None则将被返回。

此外,请确保您的字典包含有效的数据类型。在您的字典中,键(abc、def、ghi)应表示为字符串,您的日期应表示为字符串或日期对象。


推荐阅读