python - Pandas:在数据框中创建列并通过查看另一个数据框为该列分配值
问题描述
我有两个数据框如下。
DF1 和 DF2
我想在 DF1 中创建一个列作为“名称”并根据以下条件分配值。
1) Check if DF1['C1'] value is available in DF2['C']
2) If yes, assign DF1['name'] with the value in DF2['name']
3) If no, Check if DF1['C2'] value is available in DF2['C']
4) If yes, assign DF1['name'] with the value in DF2['name']
5) If both DF1['C1'] value is not found in DF2['C'] then assign DF1['name'] as other.
输出:
解决方案
map
每列都有第二个 DataFrame 并用于combine_first
处理您的优先级逻辑。然后填充任何缺失值以获得'other'
s = df2.set_index('C')['name']
df1['name'] = df1['C1'].map(s).combine_first(df1['C2'].map(s)).fillna('other')
C1 C2 name
0 0 1 x
1 6 4 z
2 7 5 other
推荐阅读
- python - 在 Python 中将多个数据帧保存到环境中
- node.js - 使用 layout.ejs 动态或如何编辑 view-layout.js
- java - java.lang.NoClassDefFoundError 在 build.gradle 中使用 sourceSets 指定类目录时出错
- oracle - 在 Oracle 中授予另一个用户的截断权限
- kubernetes - 使用带有 Terraform 的 kubernetes_pod oci 提供程序创建 pod 时出现连接错误
- python - 对类的 __getattr__ 做某事,导致奇怪的错误:python 控制台中的任何命令都会两次调用 __getattr__ 中的内容
- r - R LCA 中的 flexmix 包
- vue.js - 路由更改时,过渡不适用于 nuxt-child 组件
- wordpress - 更换收货地址和帐单地址
- c# - 使用 ASP.NET Core 3.1 Web API 获取用户的 IP 地址