基于条件将列从一个数据帧映射到另一个数据帧

2024-09-24 02:16:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个数据帧 df_inv

以及DFU销售。 df_sales

我需要添加一个列与销售人员姓名的基础上,医生,他是在df\u销售标签到df\u inv。这将是一个简单的合并,我想如果销售人员对医生的关系在dfu销售是独特的。但销售人员中的医生所有权发生了变化,每次转岗都会增加一行,并更新日期。 因此,如果发票日期小于更新日期,则应使用以前的标记,如果以前没有标记,则应显示nan。换句话说,对于df\u inv中的每个发票日期,df\u sales中的上一个最大更新日期应用于标记

结果表应该是这样的 Final Table

我对编程比较陌生,但我通常能找到解决问题的方法。但我想不通。感谢您的帮助


Tags: 数据标记df人员关系发票标签基础
1条回答
网友
1楼 · 发布于 2024-09-24 02:16:29
import pandas as pd
import numpy as np
df_inv = pd.read_excel(r'C:\Users\joy\Desktop\sales indexing\consolidated report.xlsx')
df_sales1 = pd.read_excel(r'C:\Users\joy\Desktop\sales indexing\Sales Person 
tagging.xlsx')
df_sales2 = df_sales1.sort_values('Updated Date',ascending=False)

df_sales = df_sales2.reset_index(drop=True)

sales_tag = []
sales_dup = []
counter = 0
for inv_dt, doc in zip(df_inv['Invoice_date'],df_inv['Doctor_Name']):

    for sal, ref, update in zip(df_sales['Sales 
    Person'],df_sales['RefDoctor'],df_sales['Updated Date']):

    if ref==doc:
        if update<=inv_dt and sal not in sales_dup :
            sales_tag.append(sal)
            sales_dup.append(ref)
            break
        else:
            pass

    else:
        pass
sales_dup = []
counter = counter+1
if len(sales_tag)<counter:
    sales_tag.append('none')
else:
    pass

df_inv['sales_person'] = sales_tag

这似乎奏效了

相关问题 更多 >