2017-01-23 88 views
0

我正在一個項目中,我有一個xlsx的記錄。一些記錄有多個實例。像這樣:根據不同列中的值查找行號列表?

Id, Field 1, Field 2, Field 3 
ABC01, 0.034, 0.044, 0.050 
ABC01, 0.055, 0.065, 0.060 
ABC01, 0.047, 0.082, 0.070 
DEF02, 0.034, 0.044, 0.050 
DEF02, 0.055, 0.065, 0.060 
XYZ05, 0.047, 0.082, 0.070 

我的目標是將Field 3中每個具有最高值的實例的整行寫入到一個新的xlsx中。我也希望複製非複製的記錄。

到目前爲止,我已經使用openpyxl迭代第一列來創建值列表。我爲字段3創建了一個值列表。我創建了一個重複的ID值列表。最後,如果我有行號列表,我知道如何將行寫入新的woorkbook。

我需要的是我如何在字段3

由於得到最高值的ID的行號的列表!

回答

1

您可以考慮使用pandas。它支持Excel IO。

import pandas as pd 

df = pd.read_excel("data.xlsx") 
indices = df.groupby('Id')["Field 3"].idxmax() 
deduped_df = df.ix[indices] 
deduped_df.to_excel("deduped_data.xlsx") 
+0

這是大熊貓擅長的(不是雙關語意思)。同樣值得注意的是,如果內置支持不夠,openpyxl支持與熊貓一起工作。 https://openpyxl.readthedocs.io/en/latest/pandas.html –

+0

工作就像一個魅力。謝謝。對於任何像我這樣的熊貓新手,這裏是上面使用的pandas.DataFrame的文檔。這有助於我瞭解遊戲中的方法和屬性(groupby,idmax,ix)。 http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.html –