【发布时间】:2019-01-23 16:14:33
【问题描述】:
我正在寻找 map 字典中的 value 到 DataFrame 中的一列,其中字典中的 key 等于该 DataFrame 中的第二列
例如:
如果我的字典是:
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']) 来保留它们?
与 Remap values in pandas column with a dict, preserve NaNs 不同,它映射字典中的值以替换包含与字典中的键等效的 a 值的列。这是关于根据键值将 dict 值添加到 DataFrame 中的另一列。
【问题讨论】:
-
simply
df['Date'] = df.Member.map(d)注意,你不应该将字典命名为dict,因为它在 Python 中有特殊的含义。见Pandas.Series.map -
根据
Not a duplicate,在功能上没有区别。您的专栏似乎完全是NaN,所以它基本上没有任何信息。默认情况下,.map返回NaN如果对于键不在字典中的映射,那么只需映射并完全覆盖您的Date列。另一方面,如果您只想将Date中的值替换为字典中的键(例如Date并不总是为空的情况,那么您可以只使用.replace(d)而不是.map(d)。两者包含在该副本中。
标签: python pandas dataframe dictionary