Ich habe einen Datenrahmen ‚df_ret_temp‘Warum dataframe.appy Kosten zu viel Zeit
Ich möchte die Spalte accMonth Werte einzustellen. Es gibt Codes schnell
laufendf_ret_temp.loc[df_ret_temp['tradeDate'].str[5:7]<='03','accMonth']=df_ret_temp['tradeDate'].str[0:4].apply(lambda x:str(int(x)-1))+'12'
df_ret_temp.loc[(df_ret_temp['tradeDate'].str[5:7]<='06') &
(df_ret_temp['tradeDate'].str[5:7]>'03'),'accMonth']=df_ret_temp['tradeDate'].str[0:4]+'03'
df_ret_temp.loc[(df_ret_temp['tradeDate'].str[5:7]<='09') &
(df_ret_temp['tradeDate'].str[5:7]>'06'),'accMonth']=df_ret_temp['tradeDate'].str[0:4]+'06'
df_ret_temp.loc[(df_ret_temp['tradeDate'].str[5:7]<='12') &
(df_ret_temp['tradeDate'].str[5:7]>'09'),'accMonth']=df_ret_temp['tradeDate'].str[0:4]+'09'
Allerdings, wenn ich Funktion anwenden, die Spalte zu viel Zeit accMonth Werte.Verfahren Codes zu kosten.
def df_ret_tempFun(row):
if row['tradeDate'][5:7]<='03':
row['accMonth']=str(int(row['tradeDate'][0:4])-1)+'12'
elif row['tradeDate'][5:7]<='06' and row['tradeDate'][5:7]>'03':
row['accMonth']=row['tradeDate'][0:4]+'03'
elif row['tradeDate'][5:7]<='09' and row['tradeDate'][5:7]>'06':
row['accMonth']=row['tradeDate'][0:4]+'06'
else:
row['accMonth']=row['tradeDate'][0:4]+'09'
return row
df_ret_temp=df_ret_temp.apply(df_ret_tempFun,axis=1)
Warum hat die Anwendungsfunktion eine geringere Leistung?