Pandas: return 行具有两个匹配列的共性

Pandas: return rows that have two matching columns commonality

我正在尝试编写一个通用脚本,它将 pandas 数据框中的 return 行包含两个匹配的列,并且还将匹配的行数汇总到一个新列中

OPERATION 和 MACHINE 是要匹配的列

输入:

BATCH OPERATION MACHINE DATE
1A 4000 Printer1 01-Jan-22
1A 2000 Fax1 02-Jan-22
1B 4000 Printer2 03-Jan-22
1B 2000 Phone1 04-Jan-22
1C 2000 Phone2 05-Jan-22
1A 2000 Phone2 06-Jan-22

输出:本例中的最后两行 OPERATION =2000 且 MACHINE = Phone2

BATCH OPERATION MACHINE DATE MATCHES
1C 2000 Phone2 05-Jan-22 2
1A 2000 Phone2 06-Jan-22 2

我尝试了几个合并和重复的 df 命令,但无法正常工作。

df[df.groupby(['OPERATION', 'MACHINE'])['BATCH'].transform('count') > 1].assign(MATCHES = df.groupby(['OPERATION', 'MACHINE'])['BATCH'].transform('count'))

  BATCH  OPERATION MACHINE       DATE  MATCHES
4    1C       2000  Phone2  05-Jan-22        2
5    1A       2000  Phone2  06-Jan-22        2

df['MATCHES'] = df.groupby(['OPERATION', 'MACHINE'])['BATCH'].transform('count')
df[df['MATCHES']>1]

注意:一个可能比另一个更快,具体取决于源数据帧