我正在寻找 map
value
在一个 DataFrame 的一列中,其中 key
在该列中的第二个 dict 等于
例如:
如果我的命令是:
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
注意: dict
不包含 df 中“成员”下的所有值。如果我映射,我不希望将这些值转换为 np.Nan
。所以我想我必须做一个 fillna(df['Member'])
来保留它们?
与 使用字典重新映射 pandas 列中的值不同,保留映射字典中的值的 NaN 以替换包含与字典中的键等效的值的列。这是关于根据键值将 dict 值添加到 DataFrame 中的另一个列。
原文由 Windstorm1981 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以使用
df.apply
来解决您的问题,其中d
是您的字典。此代码所做的是获取
Member
列中的每个值,并在您的字典中查找该值。如果在字典中找到该值,则相应的字典值将填充该列。如果该值不在字典中,则None
将被返回。此外,请确保您的字典包含有效的数据类型。在您的字典中,键(abc、def、ghi)应表示为字符串,而您的日期应表示为字符串或日期对象。