python - 根据字典键将字典值分配给 DataFrame 列
问题描述
我正在寻找数据帧中一列的字典,其中map
字典中的 等于该数据帧中的第二列value
key
例如:
如果我的字典是:
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'])
来留住他们?
与使用 dict 重新映射 pandas 列中的值不同,保留 NaN映射 dict 中的值以替换包含与 dict 中的键等效的 a 值的列。这是关于根据键值将 dict 值添加到 DataFrame 中的 ANOTHER 列。
解决方案
您可以使用df.apply
来解决您的问题,d
您的字典在哪里。
df["Date"] = df["Member"].apply(lambda x: d.get(x))
这段代码的作用是获取Member
列中的每个值,并在您的字典中查找该值。如果在字典中找到该值,则相应的字典值将填充该列。如果该值不在字典中,None
则将被返回。
此外,请确保您的字典包含有效的数据类型。在您的字典中,键(abc、def、ghi)应表示为字符串,您的日期应表示为字符串或日期对象。
推荐阅读
- javascript - 如何将获取值传递给 json?
- python - 用 Dask 掩码替换多个值
- python - 用 .loc() 或 .iloc() 替换 .ix 调用
- python - 具有上下索引的方程的 Smypy 打印格式
- php - 当方法更改为 GET 路由不像 POST 方法 Laravel 那样工作
- java - 从 java 程序中,启动一个 Python 脚本,该脚本监听来自所述 Java 程序的套接字连接
- python - How to remove everything before certain character in Python
- javascript - 如何在反应中扩展渲染 DOM
- docker - 如何配置 Jenkins 作业以使用 Docker 构建?
- python - SQLAlchemy ORM 对不同的表使用相同的模型并传递变量来运行查询