私は大きなパンダのデータフレームを持っています。それは何千もの列と100万行以上あります。私は最大値と最小値の間の差を行ごとに計算したいと思います。多くのNaN値があり、いくつかの行はすべてNaN値であることに注意してください(ただし、私はまだそれらを保持したい!)。Pythonの大きなデータフレームで反復するコードを最適化する方法
私は次のコードを書いています。それは動作しますが、それは時間がかかります:
totTime = []
for index, row in date.iterrows():
myRow = row.dropna()
if len(myRow):
tt = max(myRow) - min(myRow)
else:
tt = None
totTime.append(tt)
それを最適化する方法はありますか?次のコードを試してみましたが、すべてのNaN行が発生したときにエラーが発生します。
tt = lambda x: max(x.dropna()) - min(x.dropna())
totTime = date.apply(tt, axis=1)
すべての提案があります。
IIUCあなたがちょうどすることができます 'date.max(軸= 1) - data.min(軸= 1) ' – EdChum
ループを使って' apply'を使わずにベクトル化されたメソッドを検索することをお勧めします。ほとんどのpandas opsは 'NaN'をうまく扱い、操作の前後にフィルターをかける必要があります。 – EdChum