У меня есть фрейм данных с числовыми и категориальными данными (df1). Я создаю базу данных, которая напоминает первый фрейм данных df2, то есть имеет те же имена столбцов и dtypes, что и df1. Однако, помимо имен и dtypes df1, я также хотел бы сохранить категории категориальных переменных, даже если они не появляются в df2 при его создании.
На данный момент самое простое решение, которое я нашел, - это перебрать все категориальные переменные на df2, добавив категории каждой категориальной переменной df1. Однако я считаю, что должно быть более быстрое / более эффективное решение, чем то, которое я предлагаю.
df1 = pd.DataFrame({
'A' : pd.Categorical(list('bbeebbaa'), categories=['e','a','b'], ordered=True),
'B' : [1,2,1,2,2,1,2,1],
'C' : pd.Categorical(list('ddeeccaa'), categories=['e','a','d', 'c'], ordered=True)})
df2 = pd.DataFrame({
'A' : pd.Categorical(list('bbeebbbb'), categories=['e', 'b'], ordered=True),
'B' : [1,2,1,2,2,1,2,1],
'C' : pd.Categorical(list('cccccccc'), categories=['c'], ordered=True)})
categorical = ['A', 'B']
for var in categorical:
df2[var] = df2[var].cat.add_categories(df1[var].cat.categories)