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]
注意:一个可能比另一个更快,具体取决于源数据帧
我正在尝试编写一个通用脚本,它将 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]
注意:一个可能比另一个更快,具体取决于源数据帧