python - 基于另一个文件对数据帧值执行操作
问题描述
我有一个这样的 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
我该怎么做呢 ?我最初考虑使用正则表达式,但很快就变得讨厌,所以我开始考虑其他方式。任何指针将不胜感激。
解决方案
让你像 dict 一样输入,然后我们调用 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
推荐阅读
- javascript - 节点。制作不和谐机器人时不工作
- google-cloud-storage - 无法获得 gsutil du 命令的准确结果
- python - 如何在 Python 中将数据框转换为奇数字典
- android - 如何使用 JetpackNavigation 组件从 BottomSheetDialogFragment 导航到另一个 Fragment
- join - GNU join 覆盖输出列
- git - 什么情况下git会删除未跟踪的文件?
- visual-studio - Librarian->Additional Dependencies 的用例是什么?
- django - 关系“survey_surveyuser”的“id”列中的空值违反非空约束
- c# - 使用 Blazor 服务器端天气应用程序将 Unix、UTC 格式的数据接收时间 (dt) 从 API 调用转换为传统日期格式
- angular - Angular - 如何只允许在 Dynamic FormArray 中选择一个复选框