Как изменить индекс кадра данных после применения функции в Python? - PullRequest
0 голосов
/ 13 мая 2019

У меня есть различные имена dataframes: step1, step2, step5, step7 и т. Д.

Я написал следующую функцию:

def statistics(df):
    plus_one = df['BacksGas_Flow_sccm'][df['y_ocsvm'] == 1].describe()
    negative_one = df['BacksGas_Flow_sccm'][df['y_ocsvm'] == -1].describe()
    return plus_one, negative_one

где BacksGas_Flow_sccm &y_ocsvm - это имена столбцов во всех различных фреймах данных.

После этого я пытаюсь создать новый фрейм данных, содержащий статические записи, возвращаемые describe(), и я сделал это следующим образом:

stats = pd.DataFrame(statistics(step1))
stats = stats.append(pd.DataFrame(statistics(step2)))

и это дало мне:

                    count          mean               std   min 25% 50% 75% max
BacksGas_Flow_sccm  1622.0  0.4370119194410199  0.11346778078574718 0.33333333333333304 0.33333333333333304 0.5 0.5 0.6666666666666665
BacksGas_Flow_sccm  426.0   0.19444444444444436 0.1873737774126198  0.0 0.16666666666666652 0.16666666666666652 0.16666666666666652 1.0
BacksGas_Flow_sccm  1285.0  0.5418071768266265  0.1998356616378414  0.2222222222222221  0.2222222222222221  0.6666666666666667  0.6666666666666667  0.6666666666666667
BacksGas_Flow_sccm  8028.0  0.4678901622100473  0.10157692912484724 0.0 0.4444444444444444  0.4444444444444444  0.5555555555555556  0.9999999999999998

Я просто хочу, чтобы имя индекса было изменено с BacksGas_Flow_sccm на соответствующий фрейм данных, которому они принадлежат

Ожидаемый результат:

         count         mean               std   min 25% 50% 75% max
Step1   1622.0  0.4370119194410199  0.11346778078574718 0.33333333333333304 0.33333333333333304 0.5 0.5 0.6666666666666665
Step1   426.0   0.19444444444444436 0.1873737774126198  0.0 0.16666666666666652 0.16666666666666652 0.16666666666666652 1.0
Step2   1285.0  0.5418071768266265  0.1998356616378414  0.2222222222222221  0.2222222222222221  0.6666666666666667  0.6666666666666667  0.6666666666666667
Step2   8028.0  0.4678901622100473  0.10157692912484724 0.0 0.4444444444444444  0.4444444444444444  0.5555555555555556  0.9999999999999998

Я хотел бы знать, что можно сделать.

спасибо

Ответы [ 2 ]

1 голос
/ 13 мая 2019

Это ужасно, но это должно дать вам то, что вы хотите, без повторения индексов:

stats = pd.DataFrame(statistics(step1))
stats['step'] = 'Step1'
temp = pd.DataFrame(statistics(step2))
temp['step'] = 'Step2'
stats = stats.append(temp)
stats = stats.reset_index()
1 голос
/ 13 мая 2019

Вы можете сделать это в функции statistics, передав имя в:

def statistics(df, name):
    plus_one = df['BacksGas_Flow_sccm'][df['y_ocsvm'] == 1].describe()
    negative_one = df['BacksGas_Flow_sccm'][df['y_ocsvm'] == -1].describe()
    ret_df = pd.DataFrame((plus_one, negative_one))
    ret_df['source'] = name

    return ret_df

stats = pd.DataFrame(statistics(step1, 'step1'))
stats = stats.append(pd.DataFrame(statistics(step2, 'step2')))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...