私は、データが時間に関して順序付けされたDataFrameを持っているとしましょう。私は体重としての列を持っており、現在の指数に比例した最大の体重を求めたいと思います。たとえば、10行目で見つかった最大値は、要素11から最後までです。
私はこの機能を書いた。しかし、パフォーマンスは大きな脅威です。pandas pythonの現在のインデックスに関連した最大値を取得
import pandas as pd
df=pd.DataFrame({"time":[100,200,300,400,500,600,700,800],"weights":
[120,160,190,110,34,55,66,33]})
totalRows=df['time'].count()
def findMaximumValRelativeToCurrentRow(row):
index= row.name
if index!= totalRows:
tempDf = df[index:totalRows]
val=tempDf['weights'].max()
df.set_value(index,'max',val)
else:
df.set_value(index,'max',row['weights'])
df.apply(findMaximumValRelativeToCurrentRow,axis=1)
print df
これ以上の操作を行うための任意のより良い方法はありますか?あなたが逆の順序のためにiloc
でcummax
を使用することができます
あなたのデータのサンプルを提供してください。 – pshep123
が指定されました...エンハンスドコードで質問を更新しました –