Python — построение сводного фрейма данных из фрейма данных

#python #pandas #dataframe

#python #pandas #фрейм данных

Вопрос:

У меня есть такой фрейм данных,

Фрейм_а данных

 Employee ID   A_ Status  C_Code  TestCol   Result_A  Result_B
20000         Yes        USA      asdasdq  True      False
20001         No         BRA      asdasdw  True      True
200002                   USA      asdasda  True      True 
200003        asda       MEX      asdasar  False     False
 

В этом фрейме данных Result_A и Result_B являются логическими столбцами.

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

Мне нужны следующие столбцы в моем фрейме данных, и вывод для Result_A выглядит так, как показано ниже, а Result_B другой логический столбец будет следующей строкой сводного фрейма данных.

  Name of the Column     No. of Records     No. of Employees    True_Records    False_Records     A_Status_Yes  A_Status_No     Mex_True      Mex_False      USA_True     USA_False
         Result_A              4               4                    3                     1                1            1               0            1              2              2  
 

Также следует отметить, что идентификатор сотрудника иногда может быть ИДЕНТИФИКАТОРОМ СОТРУДНИКА или Employee_ID или EMPLOYEE_ID или EMPL_ID. Итак, список должен быть внутри python, и только один из них будет присутствовать внутри функции

В режиме реального времени у меня есть 25 фреймов данных, поэтому я ищу функцию, которую я могу повторно использовать и добавлять.

Пожалуйста, помогите мне с этим.

Комментарии:

1. Не уверен, что вам нужно…

Ответ №1:

Я думаю, я понял, что вы хотите:

1- Заново создайте свой df :

 df = pd.DataFrame({"Employee ID": [20000, 20001, 200002, 200003],
                  "A_ Status": ["Yes", "No", np.nan, "asda"],
                  "C_Code": ["USA", "BRA", "USA", "MEX"],
                  "TestCol": ["asdasdq", "asdasdw", "asdasda", "asdasar"],
                  "Result_A": [True, True, True, False],
                  "Result_B": [False, True, True, False]}, 
                  columns=["Employee ID", "A_ Status", "C_Code", "TestCol", "Result_A", "Result_B"])
 

2- Создайте второй фрейм данных df2 :

 df2 = pd.DataFrame(columns=["Name of the Column","No. of Records","No. of Employees","True_Records","False_Records","A_Status_Yes","A_Status_No","Mex_True","Mex_False","USA_True","USA_False"])
 

3- Вычислить результаты:

 for column in df.columns[4:]: # For each columns of name pattern `Result_xx`
    print(column)
    a = [column,
        len(df["Employee ID"]), # Not sure about this one
        len(df["Employee ID"]),
        len(df[df[column] == True]),
        len(df[df[column] == False]),
        len(df[df["A_ Status"] == "Yes"]),
        len(df[df["A_ Status"] == "No"]),
        len(df[(df["C_Code"] == "MEX") amp; (df[column] == True)]),
        len(df[(df["C_Code"] == "MEX") amp; (df[column] == False)]),
        len(df[(df["C_Code"] == "USA") amp; (df[column] == True)]),
        len(df[(df["C_Code"] == "USA") amp; (df[column] == False)])
       ] # Create line as list

    df2.loc[len(df2), :] = a # Append line
 

4- Результаты:

  ---- ---------------------- ------------------ -------------------- ---------------- ----------------- ---------------- --------------- ------------ ------------- ------------ ------------- 
|    | Name of the Column   |   No. of Records |   No. of Employees |   True_Records |   False_Records |   A_Status_Yes |   A_Status_No |   Mex_True |   Mex_False |   USA_True |   USA_False |
|---- ---------------------- ------------------ -------------------- ---------------- ----------------- ---------------- --------------- ------------ ------------- ------------ -------------|
|  0 | Result_A             |                4 |                  4 |              3 |               1 |              1 |             1 |          0 |           1 |          2 |           0 |
|  1 | Result_B             |                4 |                  4 |              2 |               2 |              1 |             1 |          0 |           1 |          1 |           1 |
 ---- ---------------------- ------------------ -------------------- ---------------- ----------------- ---------------- --------------- ------------ ------------- ------------ -------------