Python 将“pandas.get_dummies”转换为新数据的简单方法?

Python 将“pandas.get_dummies”转换为新数据的简单方法?,python,pandas,Python,Pandas,假设我有一个数据框data,其中包含要转换为指标的字符串。我使用pandas.get_dummies(data)将其转换为我现在可以用于构建模型的数据集 现在我有一个新的观察结果,我想在我的模型中运行。显然,我不能使用pandas.get_dummies(new_data),因为它不包含所有类,也不会生成相同的指标矩阵。有什么好方法可以做到这一点吗?您可以从单个新观测值创建虚拟对象,然后使用原始指示器矩阵中的列重新为该框架列编制索引: import pandas as pd df = pd.Da

假设我有一个数据框
data
,其中包含要转换为指标的字符串。我使用
pandas.get_dummies(data)
将其转换为我现在可以用于构建模型的数据集


现在我有一个新的观察结果,我想在我的模型中运行。显然,我不能使用pandas.get_dummies(new_data),因为它不包含所有类,也不会生成相同的指标矩阵。有什么好方法可以做到这一点吗?

您可以从单个新观测值创建虚拟对象,然后使用原始指示器矩阵中的列重新为该框架列编制索引:

import pandas as pd
df = pd.DataFrame({'cat':['a','b','c','d'],'val':[1,2,5,10]})
df1 = pd.get_dummies(pd.DataFrame({'cat':['a'],'val':[1]}))
dummies_frame = pd.get_dummies(df)
df1.reindex(columns = dummies_frame.columns, fill_value=0)
返回:

        val     cat_a   cat_b   cat_c   cat_d
  0     1       1       0       0       0

你可能想要fill_value=0。天哪,我喜欢堆栈溢出。这意味着在推理时将整个训练数据帧存储在内存中@marbel否,您只需要列索引。如果测试数据不包含该类别的任何不可见值,则此操作有效。但如果真的发生了呢?正确的解决办法是将其归入“其他”类别。如何有效地实现这一点?