Win*_*981 2 python dictionary pandas
不是重复的:
引用的答案映射了字典中的值,以替换包含等于该字典中的键的值的列。我的问题是关于将dict值添加到基于键值的数据框中的ANOTHER列中。
我对Python不太熟悉 dictionary
所以如果这是一个简单的问题,请事先道歉。
我期待map
的value
一个字典一列的数据帧,其中key
在字典等于在数据帧第二列
例如:
如果我的字典是:
dict = {abc:1/2/2003, def:1/5/2017, ghi:4/10/2013}
Run Code Online (Sandbox Code Playgroud)
我的数据框是:
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
Run Code Online (Sandbox Code Playgroud)
我想得到以下消息:
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
Run Code Online (Sandbox Code Playgroud)
注意:dict
在df中,“成员”下没有所有值。我不希望将这些值转换为np.Nan
我的地图。所以我认为我必须做一个fillna(df['Member'])
保留它们?
提前致谢。
我只想做一个简单的地图来得到答案。
如果我们有一本字典
d = {'abc':'1/2/2003', 'def':'1/5/2017', 'ghi':'4/10/2013'}
Run Code Online (Sandbox Code Playgroud)
数据框为:
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
Run Code Online (Sandbox Code Playgroud)
那么一张简单的地图就可以解决问题。
df["Date"] = df["Member"].map(d)
Run Code Online (Sandbox Code Playgroud)
map()
将在字典中查找 中的值df['Member']
,对于 中的每个值Member
,它将从字典中获取值d
并将其分配回Date
。如果该值不存在,则会赋值NaN
。
我们不需要循环或应用。
您可以df.apply
用来解决问题,d
字典在哪里。
df["Date"] = df["Member"].apply(lambda x: d.get(x))
Run Code Online (Sandbox Code Playgroud)
这段代码要做的是获取Member
列中的每个值,然后在字典中查找该值。如果在字典中找到该值,则相应的字典值将填充该列。如果该值不在字典中,则None
则将返回。
另外,请确保您的词典包含有效的数据类型。在字典中,键(abc,def,ghi)应表示为字符串,而日期应表示为字符串或日期对象。