我有一個大熊貓數據框。它有數千列和超過一百萬行。我想要計算最大值和最小值之間的差異。請記住,有許多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'並且像我建議的那樣搜索矢量化方法,大多數熊貓操作將優雅地處理'NaN',然後需要在操作之前或之後過濾掉 – EdChum