2017-06-18 5 views
0

私はプログラミングとPythonの初心者です。私はpandasモジュールによって作成されたDataFrameを持っています。データセットのインデックス列は、 "Rho"、 "Capacity"、 "Model-Version"です。これらの要因に基づいて私はいくつかのシミュレーションを実行し、5回の実行でそれぞれの収益を見出しました。列には、「平均」、「下限」、および「上限」が表示されます。pythonの特定の行を削除するpandas行の比較に基づくDataFrame

今、私は、それぞれの特定のRhoと容量のための最も良い収入を見つけたいと思います。だから私は、異なるモデルの上限と下限を比較する必要があります。行の下限が別の上限の値よりも高い場合は、上限が小さい行を削除する必要があります。私はそれが動作しないことを知って、

from pandas import * 

df_rev = DataFrame.from_csv(path="revenue_total.csv", index_col=[3, 4, 5]) 

print(df_rev.iloc[0][2]) 

# removing those revenues in a class that are low: 
for index1, row1 in df_rev.iterrows(): 
    for index2, row2 in df_rev.iterrows(): 
     if index1[0] is index2[0] and index1[1] is index2[1]: 
      if row1[1] > row2[2]: 
       df_rev = df_rev.drop(df_rev.index[index2]) 
      elif row2[1] > row1[2]: 
       df_rev = df_rev.drop(df_rev.index[index1]) 

print(df_rev) 

しかし:ここ

は、私が現在持っているコードです。誰か私は何をすべきか手がかりを持っていますか?

ありがとうございました

答えて

0

おそらく最大の収入を見つけるべきです。

a = [['a','a',1,5],['a','a',3,4],['a','b',5,6],['b','c',7,8]] 
df = pd.DataFrame(a) 
df = df.set_index([0,1]) 
df.groupby([df.index.get_level_values(0),df.index.get_level_values(1)]).max() 

これは、インデックス0と1

+0

それが動作おかげ上でグループ化され、他の列から最大の価値を提供します! –

関連する問題