我有 2 个数据帧 X_train
和 X_test
。这两个数据框具有相同的列。
有 1 个名为 levels
的列需要从 str
更改为 int
。但是,每个数据帧的 levels
列都有不同的唯一值:
X_train
具有:['Level 0'、'Level 10'、'Level 30'] 作为唯一值。
X_test
具有:['Level 20', 'Level 40'] 作为唯一值。
目标是 1) 合并来自 X_train
和 X_test
的唯一值,然后 2) 将 cat.codes
应用于两者数据框,以便它们保持一致。我该怎么做呢?基本上,应用于两个数据帧的 cat.codes
如下,即使 1 个数据帧可能没有另一个数据帧具有的值:
{0: 'Level 0', 1: 'Level 10', 2: 'Level 20', 3: 'Level 30', 4: 'Level 40'}
现在我只有以下内容,但我不确定如何获取两个 cat.codes
的唯一值。
X_train['levels'] = X_train['levels'].astype('category').cat.codes
X_test['levels'] = X_test['levels'].astype('category').cat.codes
最佳答案
使用CategoricalDtype
来控制代码:
lst = sorted(set(X_train['levels'].dropna().unique())
| set(X_test['levels'].dropna().unique()))
lvl = pd.CategoricalDtype(lst, ordered=True)
X_train['codes'] = X_train['levels'].astype(lvl).cat.codes
X_test['codes'] = X_test['levels'].astype(lvl).cat.codes
输出:
>>> X_train
levels codes
0 Level 0 0
1 Level 10 1
2 Level 30 3
>>> X_test
levels codes
0 Level 20 2
1 Level 40 4
2 NaN -1
关于python - 如何将相同的 cat.codes 应用于 2 个不同的数据帧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75608033/