在整个数据框列中循环命令

问题描述 投票:0回答:0

我写了一个代码来识别我的股票何时在投资组合中(位置 == 1)并在发生这种情况时关联相应的费用。

#lag the position column

long_position['PosLag'] = long_position['AMAZON.COM'].shift(1).round() long_position.dropna(inplace=True)
long_position['PosLag'] = long_position['PosLag'].astype(int) long_position

long_position['order'] = 0

#create switching patterns as string
long_position.loc[long_position['AMAZON.COM'] != long_position.PosLag, ['order']] = long_position['AMAZON.COM'].astype(str) + long_position.PosLag.astype(str)

#make a column for fees (more complex with short)
fees = -0.001 
long_position['fees'] = 0

#register the fees, in log-return!
long_position.loc[long_position.order != 0, ['fees']] = np.log(1+fees)

check fees
long_position

这里是输出:

现在我想创建一个循环,对数据框中的每一列执行相同的操作,并仅将每家公司的“费用”附加到新列表/数据框。

这里是不起作用的代码

long_positions=buy_esg.copy()
long_positions

tickers = list(buy_esg)

result =[]
for ticker in tickers:
    long_positions['lag']=long_positions[ticker].shift(1).round()
    long_positions['lag'].dropna(inplace=True)
    long_positions.lag = long_positions['lag'].astype(int)
    
    long_positions['order'] = 0
    long_positions.loc[long_positions[ticker] != long_positions.lag, ['order']] = long_positions[ticker].astype(str) + long_positions.lag.astype(str)
    
    fees = -0.001
    long_positions['fees'] = 0
    long_positions.loc[long_positions.order != 0, ['fees']] = np.log(1+fees)
    output = long_positions['fees']
    result.append(output)

result

谢谢!!

dataframe loops append iterated-function
© www.soinside.com 2019 - 2024. All rights reserved.