我有一个这样的csv文件,其中包含很多值-
Time,metric_A,metric_B,metric_C
0,1,2,3
1,3,4,5
2,7,8,9
我可以轻松地将其读取为数据框并计算新的指标,例如metric_A + metric_B
df=pandas.read_csv('file.csv)
df['new_metric']=df['metric_A']+df['metric_B']
这是棘手的部分。我想而不是单独定义每个新指标,而是想使用以下公式导入文件。我也想将这些新指标添加到原始csv文件中
formula File - sample
new_metric_A=metric_A/metric_B
new_metric_B=metric_A-metric_B
new_metric_D=metric_A/(metric_B+metric_C)
最终预期输出类似于-
Time,metric_A,metric_B,metric_C,new_metric_A,new_metric_B,new_metric_D
0,1,2,3,X,Y
1,3,4,5,A,B
2,7,8,9,C,D
我该怎么做?我最初考虑使用正则表达式,但很快就变得讨厌,所以我开始考虑其他方式。任何指针将不胜感激。
答案 0 :(得分:1)
让您像字典一样输入,然后我们将其称为eval
d={'new_metric_A':'metric_A/metric_B',
'new_metric_B':'metric_A-metric_B',
'new_metric_D':'metric_A/(metric_B+metric_C)'}
for x , y in d.items():
df[x]=df.eval(y)
df
Time metric_A metric_B metric_C new_metric_A new_metric_B new_metric_D
0 0 1 2 3 0.500 -1 0.200000
1 1 3 4 5 0.750 -1 0.333333
2 2 7 8 9 0.875 -1 0.411765