从数据框中删除相同的行

2024-09-27 23:20:49 发布

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

我试图删除两个数据帧之间匹配的相同行。然而,我尝试的同一数据帧中相同行的方法也会被删除。但我想保留来自同一数据帧的相同行,并删除仅与其他数据帧匹配的行

Dataframe 1:

 ID             PID         PDate      Amount
AAAAAA          NN11        20210525    386
BBBBBB          A12         20210525    3300
BBBBBB          A12         20210525    3300
CCCCCC          B11         20210625    1000

Dataframe 2:

 ID             PID         PDate      Amount
AAAAAA          NN11        20210525    386



Expected output:
 ID             PID         PDate      Amount
BBBBBB          A12         20210525    3300
BBBBBB          A12         20210525    3300
CCCCCC          B11         20210625    1000

我尝试了连接和删除重复项、合并、重置索引。所有这些都会丢失ID BBBBBB,因为具有该ID的行是相同的。我想留住他们

有人能帮我吗


Tags: 数据方法iddataframeoutputpidamountexpected
2条回答

通过键的并集合并两个数据帧。使用indicator=True参数保存关于每行源的信息。如果值为both,则删除该行

>>> pd.merge(df1, df2, how="outer", indicator=True) \
      .query("_merge != 'both'") \
      .drop(columns="_merge")

       ID  PID     PDate  Amount
1  BBBBBB  A12  20210525    3300
2  BBBBBB  A12  20210525    3300
3  CCCCCC  B11  20210625    1000

试试isin

df1[~df1.isin(df2).all(1)]

输出

    ID      PID PDate       Amount
1   BBBBBB  A12 20210525    3300
2   BBBBBB  A12 20210525    3300
3   CCCCCC  B11 20210625    1000

相关问题 更多 >

    热门问题