如何将列表中的值映射到具有二进制值的 pandas 数据框
How to map values in a list to a pandas dataframe with binary values
我有一个包含字符串值的嵌套列表,我用它来创建一个包含二进制值的列表。我在我的模型中使用转换后的列表作为预测变量。
包含字符串值的列表 -
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]]
请注意,在测试数据中,只有部分预测变量出现。
非常感谢您的帮助。
您基本上可以执行与之前相同的过程,只需稍作修改:创建虚拟数据框后,将 reindex
与 D_tran
的列一起使用:
R_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()
我有一个包含字符串值的嵌套列表,我用它来创建一个包含二进制值的列表。我在我的模型中使用转换后的列表作为预测变量。
包含字符串值的列表 -
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]]
请注意,在测试数据中,只有部分预测变量出现。
非常感谢您的帮助。
您基本上可以执行与之前相同的过程,只需稍作修改:创建虚拟数据框后,将 reindex
与 D_tran
的列一起使用:
R_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()