当我想在python中更改DataFrame(panda)中的各个值时,我想知道如何使用for循环
例如,我有以下DataFrame,其中包含NFSE和DAX索引的价格。
Date NFSE DAX
2018/02/01 32.085 43.042
2018/02/02 31.036 43.023
2018/02/03 30.013 42.016
我想将所有给定的价格转换为对数回报百分比:rt = 100 * np.log(Pt / Pt-1)。
我该如何使用for循环来对所有价格进行求和,从而创建一个具有百分比日志返回率的新DataFrame?
先谢谢您!
干杯
朱利安
答案 0 :(得分:0)
这会提供所需的输出吗?
# pick the columns you wish to calculate
# a single column must be in a list
col_list = ['NFSE', 'DAX']
# create a new dataframe with only columns from col_list
df_log = df[col_list].copy()
# you can use a loop to run through your col_list columns
for col in df_log.columns:
df_log[col] = 100 * np.log(df_log[col] / df_log[col].shift())
print(df_log)
NFSE DAX
2018-02-01 NaN NaN
2018-02-02 -3.324081 -0.044153
2018-02-03 -3.351720 -2.368436
设置df
df = pd.DataFrame({'NFSE': [32.085, 31.036, 30.013],
'DAX': [43.042, 43.023, 42.016]},
index=pd.date_range('2018/02/01', periods=3))