【发布时间】:2020-03-18 19:24:52
【问题描述】:
我有一个 DataFrame,其中包含 2 列 有序 分类数据(属于 same 类别)。我想构建另一列,其中包含前 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 项有问题,如运行以下代码所示。
df['A'] > df['B']
手册建议 max() 适用于分类数据,因此我尝试如下定义我的新列。
df[['A', 'B']].max(axis=1)
这会产生一列 NaN。为什么?
【问题讨论】:
标签: pandas max categorical-data rowwise