我正在嘗試撰寫一個通用腳本,它將回傳熊貓資料框中具有兩個匹配列的行,并且還將匹配的行數匯總到一個新列中
OPERATION 和 MACHINE 是要匹配的列
輸入:
| 批 | 手術 | 機器 | 日期 |
|---|---|---|---|
| 1A | 4000 | 列印機1 | 22 年 1 月 1 日 |
| 1A | 2000 | 傳真1 | 22 年 1 月 2 日 |
| 1B | 4000 | 列印機2 | 22 年 1 月 3 日 |
| 1B | 2000 | 電話1 | 22 年 1 月 4 日 |
| 1C | 2000 | 電話2 | 22 年 1 月 5 日 |
| 1A | 2000 | 電話2 | 22 年 1 月 6 日 |
輸出:本例中只有最后兩行,OPERATION = 2000 和 MACHINE = Phone2
| 批 | 手術 | 機器 | 日期 | 火柴 |
|---|---|---|---|---|
| 1C | 2000 | 電話2 | 22 年 1 月 5 日 | 2 |
| 1A | 2000 | 電話2 | 22 年 1 月 6 日 | 2 |
我嘗試了幾個合并和重復的 df 命令,但無法正常作業。
uj5u.com熱心網友回復:
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]
注意:一個可能比另一個更快,具體取決于源資料幀
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/474542.html
上一篇:如何將前500行保留為csv回圈(python)并覆寫每個檔案
下一篇:如何用自定義名稱融化熊貓
