2017-01-23 78 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 –

相关问题