import numpy as np
from PyQt5 import QtWidgets
from gui.ui.RenameColumn import Ui_Form
from gui.util.Modules import Modules
[docs]
class RenameColumn(Ui_Form, Modules):
[docs]
    def setupUi(self, Form):
        super().setupUi(Form)
        Modules.setupUi(self, Form) 
[docs]
    def update_lvl0(self):
        try:
            self.vars_level0 = np.unique(
                self.data[
                    self.choosedata_comboBox.currentText(
                    )].df.columns.get_level_values(
                    0
                )
            )
            self.setComboBox(self.choosecol_lvl0, self.vars_level0)
        except:
            pass 
[docs]
    def update_lvl1(self):
        try:
            self.vars_level1 = np.array(
                self.data[self.choosedata_comboBox.currentText()].df[
                    self.choosecol_lvl0.currentText()].columns.values
            )
            self.setComboBox(self.choosecol_lvl1, self.vars_level1)
        except:
            pass 
[docs]
    def run(self):
        old_lvl0 = self.choosecol_lvl0.currentText()
        old_lvl1 = self.choosecol_lvl1.currentText()
        new_lvl0 = self.new_lvl0_lineEdit.text()
        new_lvl1 = self.new_lvl1_lineEdit.text()
        # convert to float if possible
        try:
            new_lvl0 = float(new_lvl0)
        except:
            pass
        try:
            new_lvl1 = float(new_lvl1)
        except:
            pass
        dataname = self.choosedata_comboBox.currentText()
        data = self.data[dataname].df
        data[(new_lvl0, new_lvl1)] = data[
            (old_lvl0, old_lvl1)]  # create the new column
        self.data[dataname].df = data.drop(
            (old_lvl0, old_lvl1),
            axis=1
        )  # drop the old column 
 
if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Form = QtWidgets.QWidget()
    ui = RenameColumn()
    ui.setupUi(Form)
    Form.show()
    sys.exit(app.exec_())