考虑
DF
其中字符串列如下所示:
df = pd.DataFrame(dict(col=['A','B','AA','C','BB','AAA','BC','AB','AA']))
df
自定义函数:
(i) 从所考虑的列中选取唯一条目。
(ii)
Groupby
按字符串长度,按字典顺序排序,并水平堆叠。
(iii)分解它们。
def complex_factorize(df, col):
ser = pd.Series(df[col].unique())
func = lambda x: sorted(x.values.ravel())
arr = np.hstack(ser.groupby(ser.str.len()).apply(func).values)
return pd.factorize(arr)
获取由
factorize
方法,将其输入
DF.replace
val, ser = complex_factorize(df, 'col')
df.replace(ser, val)