如何将列表中的值映射到具有二进制值的pandas数据帧

时间:2016-07-27 21:32:13

标签: pandas mapping

我有一个带有字符串值的嵌套列表,我用它来创建一个包含二进制值的列表。我在我的模型中使用了转换后的列表作为预测变量。

包含字符串值的列表 -

D = [["An", "Cn"], ["Bs", "Gt"], ["Cd", "El"], ["Cd", "Cn", "En"]]

D_tran = pd.Series([';'.join(i) for i in D]).str.get_dummies(';')

我获得了D_tran

   An  Bs  Cd  Cn  El  En  Gt
0   1   0   0   1   0   0   0
1   0   1   0   0   0   0   1
2   0   0   1   0   1   0   0
3   0   0   1   1   0   1   0

D_list = D_tran.values.tolist()

我获得了D_list:

[[1, 0, 0, 1, 0, 0, 0], [0, 1, 0, 0, 0, 0, 1], [0, 0, 1, 0, 1, 0, 0], [0, 0, 1, 1, 0, 1, 0]]

我用它来创建一个线性回归模型。但是,要测试我的模型,我需要将测试数据中的字符串值转换为二进制。测试数据看起来像 -

R = [["Bs"], ["Cd", "El"], ["An"]]

我的问题是如何将R映射到D_list的框架中以获取

R = [[0, 1, 0, 0, 0, 0, 0], [0, 0, 1, 0, 1, 0, 0], [1, 0, 0, 0, 0, 0, 0]] 

请注意,在测试数据中,只显示部分预测变量。

非常感谢您的协助。

1 个答案:

答案 0 :(得分:1)

您基本上可以执行与之前相同的步骤,只需进行一次小修改:创建虚拟数据框后,使用D_tranR_tran = pd.Series([';'.join(i) for i in R]).str.get_dummies(';') R_tran = R_tran.reindex(columns=D_tran.columns, fill_value=0) R_list = R_tran.values.tolist()

No route matches [POST] "/"