Python 如何比较2个数据帧并基于比较添加新列

Python 如何比较2个数据帧并基于比较添加新列,python,pandas,dataframe,Python,Pandas,Dataframe,我有两个数据帧需要比较ticket\u id列。如果存在匹配项,我需要向第一个数据帧添加一列,该列来自第二个数据帧的一列。如果第一个数据帧和第二个数据帧之间不匹配,则表示第二个数据帧中有一个新行需要添加到第一个数据帧中 我曾尝试使用if语句,但未能成功地对它们进行比较 df_A(本周服务台记录单报告) df_B(上周服务台记录报告) 因此,我基本上希望基于df_a创建一个新的数据帧,但将该票据ID的前一周状态作为最后一列添加到新的数据帧中。如果从前一周到新的一周出现了一张新的票证(即票证id=4

我有两个数据帧需要比较ticket\u id列。如果存在匹配项,我需要向第一个数据帧添加一列,该列来自第二个数据帧的一列。如果第一个数据帧和第二个数据帧之间不匹配,则表示第二个数据帧中有一个新行需要添加到第一个数据帧中

我曾尝试使用if语句,但未能成功地对它们进行比较

df_A(本周服务台记录单报告)

df_B(上周服务台记录报告)

因此,我基本上希望基于df_a创建一个新的数据帧,但将该票据ID的前一周状态作为最后一列添加到新的数据帧中。如果从前一周到新的一周出现了一张新的票证(即票证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
这应该做到:

df_A.set_index('ticket_id', inplace=True)
df_B.set_index('ticket_id', inplace=True)
df_A['previous week status']=df_B.status
这应该做到:

df_A.set_index('ticket_id', inplace=True)
df_B.set_index('ticket_id', inplace=True)
df_A['previous week status']=df_B.status

正如@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
                    )

有关更多信息,请参阅或。

正如@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
                    )

有关更多信息,请查看或。

票证id真的是id吗?i、 在每个数据帧中,每个票证id是否只有一行?我刚才使用了1-4来简化它,但对于给定的票证,它实际上看起来像“IR2382”。它是每行的主键。可能重复的可能重复的是
ticket\u id
真的是一个id吗?i、 在每个数据帧中,每个票证id是否只有一行?我刚才使用了1-4来简化它,但对于给定的票证,它实际上看起来像“IR2382”。它是每行的主键。的可能重复