亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何用 Python 中的公式替換查看多個先前值的循環

如何用 Python 中的公式替換查看多個先前值的循環

飲歌長嘯 2022-05-24 15:58:26
我的問題我有一個循環,它使用基于其他列的值的公式或列中的前一個值創建列,具體取決于條件(“從新低開始的天數 == 0”)。在龐大的數據集上它真的很慢,所以我想擺脫循環并找到一個更快的公式。當前工作代碼import numpy as npimport pandas as pdcsv1 = pd.read_csv('stock_price.csv', delimiter = ',')df = pd.DataFrame(csv1)for x in range(1,len(df.index)):    if df["days from new low"].iloc[x] == 0:        df["mB"].iloc[x] = (df["RSI on new low"].iloc[x-1] - df["RSI on new low"].iloc[x]) / -df["days from new low"].iloc[x-1]    else:        df["mB"].iloc[x] = df["mB"].iloc[x-1]df輸入數據和預期輸出RSI on new low,days from new low,mB0,22,029.6,0,1.329.6,1,1.329.6,2,1.329.6,3,1.329.6,4,1.321.7,0,-2.021.7,1,-2.021.7,2,-2.021.7,3,-2.021.7,4,-2.021.7,5,-2.021.7,6,-2.021.7,7,-2.021.7,8,-2.021.7,9,-2.025.9,0,0.525.9,1,0.525.9,2,0.523.9,0,-1.023.9,1,-1.0嘗試解決方案def mB_calc (var1,var2,var3):    df[var3]= np.where(df[var1] == 0, df[var2].shift(1) - df[var2] / -df[var1].shift(1) , "")    return dfdf = mB_calc('days from new low','RSI on new low','mB')  首先,它給了我這個“TypeError:不能將序列乘以'float'類型的非整數”,其次我不知道如何將“ffill”合并到公式中。知道我怎么能做到嗎?干杯!
查看完整描述

1 回答

?
暮色呼如

TA貢獻1853條經驗 獲得超9個贊

試試這個:


df["mB_temp"] = (df["RSI on new low"].shift() - df["RSI on new low"]) / -df["days from new low"].shift()

df["mB"] = df["mB"].shift()

df["mB"].loc[df["days from new low"] == 0]=df["mB_temp"].loc[df["days from new low"] == 0]

df.drop(["mB_temp"], axis=1)

并與np.where:


df["mB"] = np.where(df["days from new low"]==0, df["RSI on new low"].shift() - df["RSI on new low"]) / -df["days from new low"].shift(), df["mB"].shift())



查看完整回答
反對 回復 2022-05-24
  • 1 回答
  • 0 關注
  • 137 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號