Python 一个热编码验证数据

Python 一个热编码验证数据,python,pandas,one-hot-encoding,Python,Pandas,One Hot Encoding,我有一个热编码特征矩阵,其中特征是训练数据的子串 我只有最后一个数据帧,它包含行=样本,列=子字符串(一个热编码)。 现在我想对一组新数据进行热编码。 数据由rows=samples,columns=String组成,我需要检查每个示例的字符串是否包含任何子字符串(特征),并对其进行热编码 循环遍历所有字符串和子字符串的速度不够快,因为我有大量的数据。 解决这个问题的快速方法是什么 编辑: 例子: 我在一个列表中有一些字符串,并且有一个热编码矩阵,其中包含以下子字符串: strings = ['

我有一个热编码特征矩阵,其中特征是训练数据的子串

我只有最后一个数据帧,它包含
行=样本,列=子字符串(一个热编码)
。 现在我想对一组新数据进行热编码。 数据由
rows=samples,columns=String
组成,我需要检查每个示例的字符串是否包含任何子字符串(特征),并对其进行热编码

循环遍历所有字符串和子字符串的速度不够快,因为我有大量的数据。 解决这个问题的快速方法是什么

编辑: 例子: 我在一个列表中有一些字符串,并且有一个热编码矩阵,其中包含以下子字符串:

strings = ['foobarista', 'foobar']

substrings = {'foo' : [1,1] ,
       'bar' : [1,1],
       'ist' : [0,1],
       'sta' : [0,1]}

df_one_hot = pd.DataFrame(substrings)
假设这是我的训练数据,所以我有功能
foo、bar、ist、sta

现在我有了新的数据:

new_strings = ['barista', 'barfoo', 'house']
并且要检查这些新字符串,如果它们包含上面数据帧中的任何子字符串

new_substrings = {'foo' : [0,1,0] ,
       'bar' : [1,1,0],
       'ist' : [1,0,0],
       'sta' : [1,0,0]}


new_df = pd.DataFrame(new_substrings)

获取新的子字符串可以通过双列表理解来完成。内部理解贯穿
新字符串
中的所有条目,外部理解为所有
子字符串
创建字典:

import re

new_strings = ['barista', 'barfoo', 'house']
sub_strings = ['foo', 'bar', 'ist', 'sta']
new_substrings= {sub_s: [ (re.search(sub_s, s) is not None)*1 for s in new_strings] for sub_s in sub_strings}
print(new_substrings)
这将返回:

{'foo': [0, 1, 0], 'bar': [1, 1, 0], 'ist': [1, 0, 0], 'sta': [1, 0, 0]}

然后,您可以使用
df=pd创建数据帧。数据帧(新的子字符串)

您可以发布一个数据示例,理想情况下作为一段可以在python中运行的代码吗?此外,您希望您的输出是什么样子的,也将其显示为一个表格,而不是用文本进行解释。我编辑了这篇文章并添加了一个示例