我有两个数据框,需要比较ticket_id列。如果存在匹配项,则需要向来自第二个数据帧的列的第一个数据帧添加一列。如果第一个数据帧和第二个数据帧之间没有匹配项,则意味着第二个数据帧中有一个新行需要添加到第一个数据帧中。
我尝试使用if语句,但是无法比较它们。
df_A(本周帮助台故障单报告)
ticket_id category submitted closed status
1 critical 4/20/19 5/1/19 closed
2 low 4/23/19 5/2/19 closed
3 medium 4/26/19 open
4 low 5/1/19 open
df_B(上周服务台故障单报告)
ticket_id category submitted closed status
1 critical 4/20/19 open
2 low 4/23/19 open
3 medium 4/26/19 open
因此,我本质上想基于df_A创建一个新数据框,但采用该票证ID的前一周状态并将其添加到新数据框中作为最后一列。如果从上周到新周出现了新票证(即ticket_id = 4),则应附加该票证,并且其状态应为NA或空白(没关系)。
预期的df_A
ticket_id category submitted closed status previous_week_status
1 critical 4/20/19 5/1/19 closed open
2 low 4/23/19 5/2/19 closed open
3 medium 4/26/19 open open
4 low 5/1/19 open NA
答案 0 :(得分:0)
这应该做:
df_A.set_index('ticket_id', inplace=True)
df_B.set_index('ticket_id', inplace=True)
df_A['previous week status']=df_B.status
答案 1 :(得分:0)
正如@Erfan已经指出的,最好是通过重命名和合并数据框来解决此问题。
df_B_reduced=(df_B.rename(columns={"status":"previous_week_status"})
.drop(["category","submitted", "closed"]) # drop duplicate info
)
df_merged=df_A.merge(right=df_B_reduced,
how='left', # if an entry is in A, but not in B, add NA values
on=["ticket_id"], # property to merge on
validate="one_to_one" # (optional) Check that your ticket_id is actually a unique id
)
有关更多信息,请查看Pandas Merging 101或the official documentation。