如何使用for循环将python DataFrame中的各个值相乘

时间:2018-11-07 18:08:18

标签: python pandas for-loop dataframe

当我想在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?

先谢谢您!

干杯

朱利安

1 个答案:

答案 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))