Python Pandas根据字典键将字典值分配给数据框列

Win*_*981 2 python dictionary pandas

不是重复的:

引用的答案映射了字典中的值,以替换包含等于该字典中的键的值的列。我的问题是关于将dict值添加到基于键值的数据框中的ANOTHER列中。


我对Python不太熟悉 dictionary所以如果这是一个简单的问题,请事先道歉。

我期待mapvalue一个字典一列的数据帧,其中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'])保留它们?

提前致谢。

Joe*_*ndz 9

我只想做一个简单的地图来得到答案。

如果我们有一本字典

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

我们不需要循环或应用。


vie*_*ind 5

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

df["Date"] = df["Member"].apply(lambda x: d.get(x))
Run Code Online (Sandbox Code Playgroud)

这段代码要做的是获取Member列中的每个值,然后在字典中查找该值。如果在字典中找到该值,则相应的字典值将填充该列。如果该值不在字典中,则None则将返回。

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

  • “dict”数据结构上的方法。返回传入 `get` 的键的值,默认情况下返回 `None` 或传递的值。在核心 Python 文档中。 (2认同)