我有3列,即模型(应作为索引)、无标准化的精度、有标准化的精度(zscore、minmax、maxabs、robust),这些都需要创建为:

 ------------------------------------------------------------------------------------
|   Models  |  Accuracy without normalization    |      Accuracy with normalization  |
|           |                                    |-----------------------------------|
|           |                                    | zscore | minmax | maxabs | robust |
 ------------------------------------------------------------------------------------

dfmod-> Models column
dfacc-> Accuracy without normalization
dfacc1-> Accuracy with normalization - zscore
dfacc2-> Accuracy with normalization - minmax
dfacc3-> Accuracy with normalization - maxabs
dfacc4-> Accuracy with normalization - robust
dfout=pd.DataFrame({('Accuracy without Normalization'):{dfacc},
     ('Accuracy using Normalization','zscore'):{dfacc1},
     ('Accuracy using Normalization','minmax'):{dfacc2},
     ('Accuracy using Normalization','maxabs'):{dfacc3},
     ('Accuracy using Normalization','robust'):{dfacc4},
   },index=dfmod
)

我想做这样的事,但我想不出更多的办法

测试数据:

qda    0.6333       0.6917      0.5917      0.6417     0.5833
svm    0.5333       0.6917      0.5333      0.575      0.575
lda    0.5333       0.6583      0.5333      0.5667     0.5667
lr     0.5333       0.65        0.4917      0.5667     0.5667
dt     0.5333       0.65        0.4917      0.5667     0.5667
rc     0.5083       0.6333      0.4917      0.525      0.525
nb     0.5          0.625       0.475       0.5        0.4833
rfc    0.5          0.625       0.4417      0.4917     0.4583
knn    0.3917       0.6         0.4417      0.4833     0.45
et     0.375        0.5333      0.4333      0.4667     0.45
dc     0.375        0.5333      0.4333      0.4667     0.425
qds    0.3417       0.5333      0.4         0.4583     0.3667
lgt    0.3417       0.525       0.3917      0.45       0.3583
lt     0.2333       0.45        0.3917      0.4167     0.3417

这些是上表中规定的各子列的值

推荐答案

这是一种肮脏的方式,我会写下来,直到有人给出更好的答案.我们开始吧:

import pandas as pd

# I assume that you can read raw data named test.csv by pandas and
# set header = None cause you mentioned the Test data without any headers, so:
df = pd.read_csv("test.csv", header = None)

# Then define preferred Columns! 
MyColumns = pd.MultiIndex.from_tuples([("Models" , ""),
                                       ("Accuracy without normalization" , ""),
                                       ("Accuracy with normalization" , "zscore"),
                                       ("Accuracy with normalization" , "minmax"),
                                       ("Accuracy with normalization" , "maxabs"),
                                       ("Accuracy with normalization" , "robust")])

# Create new DataFrame with specified Columns, after this you should pass values 
New_DataFrame = pd.DataFrame(df , columns = MyColumns)

# a loop for passing values
for item in range(len(MyColumns)):
    New_DataFrame.loc[: , MyColumns[item]] = df.iloc[: , item]

这给了我:

enter image description here

毕竟,如果要将Models设为New_DataFrame的索引,可以继续:

New_DataFrame.set_index(New_DataFrame.columns[0][0] , inplace=True)
New_DataFrame

这给了我:

enter image description here

Python相关问答推荐

单击cookie按钮,但结果不一致

替换字符串中的点/逗号,以便可以将其转换为浮动

在Windows上启动新Python项目的正确步骤顺序

如何修复使用turtle和tkinter制作的绘画应用程序的撤销功能

有什么方法可以避免使用许多if陈述

使用LineConnection动画1D数据

为什么我的Python代码在if-else声明中的行之前执行if-else声明中的行?

ModuleNotFound错误:没有名为Crypto Windows 11、Python 3.11.6的模块

无法通过python-jira访问jira工作日志(log)中的 comments

用合并列替换现有列并重命名

使用@ guardlasses. guardlass和注释的Python继承

修复mypy错误-赋值中的类型不兼容(表达式具有类型xxx,变量具有类型yyy)

使用setuptools pyproject.toml和自定义目录树构建PyPi包

如果条件不满足,我如何获得掩码的第一个索引并获得None?

如何使用Python以编程方式判断和检索Angular网站的动态内容?

连接一个rabrame和另一个1d rabrame不是问题,但当使用[...]'运算符会产生不同的结果

如何使用Pandas DataFrame按日期和项目汇总计数作为列标题

从Windows Python脚本在WSL上运行Linux应用程序

如果包含特定值,则筛选Groupby

30个非DATETIME天内的累计金额