在python中,我有两个rames.

df1看起来像下面这样:

ID      Limit       Comment
12      200         ['Normal']
23      202         ['Emergency']
23      203         ['Normal']
43      304         ['Emergency']
12      500         ['Emergency']
24      100         ['Emergency']

df2看起来像下面.

Name          Title      ID     Limit Type
BASE CASE     title1     12      X
NOT_BASE      title12    23      N
NOT_BASE_1    title 23   43      X
BASE CASE     title 23   23      X
NOT_BASE_2    title23    12      X

我想合并ID上的NTFS,但在df2中,其中BaseCase列在Name列下,它应该在注释列中列出针对正常列出的限制值.如果不是基本情况,则使用紧急情况下列出的限制.因此,输出应如下所示.

DF3

Name          Title      ID     Limit Type   Limit
BASE CASE     title1     12      X           200
NOT_BASE      title12    23      N           202
NOT_BASE_1    title 23   43      X           304
BASE CASE     title 23   23      X           203
NOT_BASE_2    title23    12      X           500

推荐答案

assign一个新的列,为您的merge提供辅助键(如果是"Base Case",否则是"Emergency"):

import numpy as np

out = (df2.assign(Comment=np.where(df2['Name'].eq('BASE CASE'),
                                   'Normal', 'Emergency'))
          .merge(df1, on=['ID', 'Comment'], how='left')
         #.drop(columns=['Comment']) # optional
       )

输出:

         Name     Title  ID Limit Type    Comment  Limit
0   BASE CASE    title1  12          X     Normal    200
1    NOT_BASE   title12  23          N  Emergency    202
2  NOT_BASE_1  title 23  43          X  Emergency    304
3   BASE CASE  title 23  23          X     Normal    203
4  NOT_BASE_2   title23  12          X  Emergency    500

可复制输入:

df1 = pd.DataFrame({'ID': [12, 23, 23, 43, 12, 24],
                    'Limit': [200, 202, 203, 304, 500, 100],
                    'Comment': ['Normal', 'Emergency', 'Normal', 'Emergency', 'Emergency', 'Emergency']})
df2 = pd.DataFrame({'Name': ['BASE CASE', 'NOT_BASE', 'NOT_BASE_1', 'BASE CASE', 'NOT_BASE_2'],
                    'Title': ['title1', 'title12', 'title 23', 'title 23', 'title23'],
                    'ID': [12, 23, 43, 23, 12],
                    'Limit Type': ['X', 'N', 'X', 'X', 'X']})

Python相关问答推荐

Python Hashicorp Vault库hvac创建新的秘密版本,但从先前版本中删除了密钥

对整个 pyramid 进行分组与对 pyramid 列子集进行分组

ModuleNotFound错误:没有名为flags.State的模块; flags不是包

删除所有列值,但判断是否存在任何二元组

scikit-learn导入无法导入名称METRIC_MAPPING64'

如何使用LangChain和AzureOpenAI在Python中解决AttribeHelp和BadPressMessage错误?

基于字符串匹配条件合并两个帧

OR—Tools CP SAT条件约束

如何在给定的条件下使numpy数组的计算速度最快?

为什么np. exp(1000)给出溢出警告,而np. exp(—100000)没有给出下溢警告?

如何在PySide/Qt QColumbnView中删除列

寻找Regex模式返回与我当前函数类似的结果

在pandas/python中计数嵌套类别

在Python中使用yaml渲染(多行字符串)

为用户输入的整数查找根/幂整数对的Python练习

在Django中重命名我的表后,旧表中的项目不会被移动或删除

按条件计算将记录拆分成两条记录

为什么在不先将包作为模块导入的情况下相对导入不起作用

按最大属性值Django对对象进行排序

基于2级列表的Pandas 切片3级多索引