簡體   English   中英

Python / Pandas /紙漿優化重復項

[英]Python / Pandas / Pulp Optimization Duplicates

我正在嘗試在有限的空間內優化對試驗成員的分組/選擇,並且遇到了一些麻煩。 我已經准備好進行優化的pandas數據框,並且可以運行線性優化而沒有問題,除了需要添加的一個約束之外。 我正在嘗試使用二進制文件進行選擇(但是由於任何原因我都沒有選擇二進制文件,因此如果使用其他方法可以解決此問題,則可以切換)。 在下一輪試驗中,我需要最小化組合試驗時間以進行選擇,但是由於試驗的性質,一些受試者已經進行了多次試驗。 我想基於最短的時間來選擇主題的最佳組合,但允許某些主題多次出現在列表中以進行優化(因此我不必事先手動刪除它們)。 例如:

Name         Trial    ID       Time (ms)    Selected?
Mary Smith   A        11001    33           1
John Doe     A        11002    24           0
James Smith  B        11003    52           0
Stacey Doe   A        11004    21           1
John Doe     B        11002    19           1

有什么方法可以允許2個John Doe條目進行優化,但是將輸出限制為只選擇其中一個? 謝謝你的時間!

如果您需要記錄要刪除的所有值,則可以使用duplicated函數,如下所示

# First sort your dataframe
df.sort_values(['Name', 'Time (ms)'], inplace=True)

# Make a new column of duplicated values based only on name
df['duplicated'] = df.duplicated(subset=['Name'])

# You can then access the duplicates, but still have a log of the rejects
df.query('not duplicated')
#           Name Trial     ID  Time (ms)  Selected?  duplicated
# 2  James Smith     B  11003         52          0       False
# 1     John Doe     A  11002         24          0       False
# 0   Mary Smith     A  11001         33          1       False
# 3   Stacey Doe     A  11004         21          1       False

df.query('duplicated')
#        Name Trial     ID  Time (ms)  Selected?  duplicated
# 4  John Doe     B  11002         19          1        True

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM