【发布时间】:2020-10-05 06:02:35
【问题描述】:
我有一个来自 CSV 文件的数据框,格式如下:
"name";"elapsed"
"etl_A";6.13e-05
"stl_A";0.0001
"etl_B";0.001
"stl_B";0.0003
"etl_C";23.2e-06
...
使用 Python Pandas,我想将数据框转换为以下格式:
benchmark_name;etl_elpased;stl_elapsed
A;6.13e-05;0.0001
B;0.001;0.0003
C;23.2e-06;...
我已经在其他语言中使用各自的groupBy 方法结合正则表达式来提取基准名称,但我对 Python 和 Pandas 都是新手。据我了解,Pandas groupBy 函数的行为与其他语言不同,我无法弄清楚。
我尝试过这样的事情:
def extract_benchmark_name(full_name: str) -> str:
return regex.match(full_name).groups()[1]
df = pandas.read_csv(source, header=0, sep=';')
etl_df = df['etl' in df['name']]
stl_df = df['stl' in df['name']]
etl_df['name'] = etl_df['name'].apply(extract_benchmark_name)
stl_df['name'] = stl_df['name'].apply(extract_benchmark_name)
但是这看起来不正确,并且还给了我各种错误。
最终,我想将它与 matplotlib 相结合,生成这样的条形图,其中包含比较 etl 和 stl 的标准化值:
非常感谢您对完成这两项任务的任何帮助,谢谢!
【问题讨论】:
标签: python pandas dataframe csv matplotlib