#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 |
---- ---------------------- ------------------ -------------------- ---------------- ----------------- ---------------- --------------- ------------ ------------- ------------ -------------