Агрегация фреймов данных Pandas изменяет тип логических столбцов

#python #pandas #dataframe #boolean #aggregation

#питон #панды #фрейм данных #логический #агрегация

Вопрос:

Я работаю с фреймами данных pandas, которые имеют несколько столбцов, каждый из которых может быть числовым, категориальным или логическим. В mwe категориальный столбец является геном, а значения в «bool_col» являются либо истинными, либо ложными для каждого гена. В pandas 1.2.4 агрегирование по категориальному столбцу с использованием функции медианы работает так, как я и ожидал:

 import pandas as pd df = pd.DataFrame.from_dict(  {  "A1": {"gene": "A", "bool_col": True, "S2": 10},  "A2": {"gene": "A", "bool_col": True, "S2": 11},  "B1": {"gene": "B", "bool_col": False, "S2": 40},  "B2": {"gene": "B", "bool_col": False, "S2": 39},  "C1": {"gene": "C", "bool_col": True, "S2": 9},  "C2": {"gene": "C", "bool_col": True, "S2": 11},  },  orient="index" ) df_genes = df.groupby("gene").agg("median")  

Как я и ожидал, агрегированный фрейм данных выглядит следующим образом, тип данных столбца «bool_col» по-прежнему является логическим, а столбец » S2 » содержит среднее значение соответствующей категории:

 bool_col S2 gene  A True 10.5 B False 39.5 C True 10.0  

Однако после обновления до версии pandas 1.3.4 логические столбцы преобразуются в тип данных ‘float64’ во время агрегирования:

 bool_col S2 gene  A 1.0 10.5 B 0.0 39.5 C 1.0 10.0  

Вероятно, можно было бы изменить тип данных столбца ‘bool_col’ обратно на логический, но ожидается ли такое поведение в pandas 1.3.4? Может быть, я что-то упускаю, но есть ли способ сохранить исходный логический тип данных? Ссылки и подсказки высоко ценятся!