У меня есть DataFrame, содержащий 2 столбца упорядоченных категориальных данных (из категории той же категории ). Я хочу построить еще один столбец, который содержит категориальный максимум первых 2 столбцов. Я настроил следующее.
import pandas as pd
from pandas.api.types import CategoricalDtype
import numpy as np
cats = CategoricalDtype(categories=['small', 'normal', 'large'], ordered=True)
data = {
'A': ['normal', 'small', 'normal', 'large', np.nan],
'B': ['small', 'normal', 'large', np.nan, 'small'],
'desired max(A,B)': ['normal', 'normal', 'large', 'large', 'small']
}
df = pd.DataFrame(data).astype(cats)
Можно сравнивать столбцы, хотя элементы np.nan проблемные c, как показывает следующий код:
df['A'] > df['B']
Руководство предполагает, что max () работает с категориальными данными, поэтому я пытаюсь определить мой новый столбец следующим образом.
df[['A', 'B']].max(axis=1)
Это дает столбец NaN. Почему?