我处理的数据看起来像这样:
ID PATH GROUP
11937 MM-YT-UJ-OO GT
11938 YT-RY-LM TQ
11939 XX-XX-OT DX
我想将PATH列标记为n-gram,然后将它们单独编码到自己的列中,这样我就会得到类似的结果:
ID GROUP MM YT UJ OO RY LM XX OT MM-YT YT-UH ...
11937 GT 1 1 1 1 0 0 0 0 1 1
我也可以使用计数代币而不是单热,所以11939在XX列中会有2而不是1,但我可以使用它们。
我可以使用scikitlearn CountVectorizer非常轻松地对列进行标记,但是我必须同时处理ID
和GROUP
字段。是否有标准的方法来执行此操作或任何人都发现的最佳实践?
答案 0 :(得分:1)
解决方案:
string ="aabcC"
count = 0
while count < len(string) - 1:
if string[count].lower() == string[count + 1].lower():
print "Characters " + string[count] + " and " + string[count + 1] + " are repeating."
count += 1
将ID和GROUP列隔离为索引。然后将字符串转换为单元格项
df.set_index(['ID', 'GROUP'], inplace=True)
pd.get_dummies(df.PATH.str.split('-', expand=True).stack())\
.groupby(level=[0,1]).sum().reset_index()
将他们放入一列数据
df.PATH.str.split('-', expand=True)
Out[37]:
0 1 2 3
ID GROUP
11937 GT MM YT UJ OO
11938 TQ YT RY LM None
11939 DX XX XX OT None
df.PATH.str.split('-', expand=True).stack()
Out[38]:
ID GROUP
11937 GT 0 MM
1 YT
2 UJ
3 OO
11938 TQ 0 YT
1 RY
2 LM
11939 DX 0 XX
1 XX
2 OT
将计数器作为跨行分布的列
get_dummies
按每个ID的数据分组,GROUP(索引中的级别0和1)将行汇总在一起,每个元组有一行。最后重置索引以将ID和GROUP列作为常规列返回。
答案 1 :(得分:0)
也许你可以尝试类似的东西。
self.cursor.execute("PRAGMA table_info('%s')" % table_name)