2017-01-23 2 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 

私の目標は、フィールド3の最高値を持つ各インスタンスの行全体を新しいxlsxに書き込むことです。また、複製されていないレコードも同様にコピーしたいと思います。

これまでのところ、openpyxlを使用してカラム1を反復して値のリストを作成しました。私はフィールド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

これは、パンダスが優れていると思われる種類のものです。また、組み込みのサポートが十分でない場合、Pandasでの作業に対する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 –

関連する問題