我对数据类型有疑问。
请假定这是我的示例数据框。
E
我将class1和class2合并,然后命名为class3
class1 class2 docid
A123 08/9 X123
A123 08/1 X123
A124 08/1 X124
A124 08/2 X124
A125 08/3 X125
然后通过get_dummies制作矩阵
class3 docid
A123,08/9 X123
A123,08/1 X123
A124,08/1 X124
A124,08/2 X124
A125,08/3 X125
并获得这样的结果
df1 = pd.get_dummies(df.docid).sort_index(level=0).max(level=[0,1])
df1
然后我删除了class3,然后将该矩阵转置以通过docid计算Jaccard相似度
class3 X123 X124 X125
A123,08/9 1 0 0
A123,08/1 1 0 0
A124,08/1 0 1 0
A124,08/2 0 1 0
A125,08/3. 0 0 1
结果是这样的
df1_new = df1.drop(['class3'], axis=1)
df1_new_1 = df1_new.transpose()
df1_new_1
从这个结果来看,该列没有名称,那么我想问一下如何将X123 X124 X125更改为0 1 2或仅将数据类型从字符串更改为int?因为,当我使用此结果来计算Jaccard相似度时,它就出现了
0 1 2 3 4
X123 1 1 0 0 0
X124 0 0 1 1 0
X125 0 0 0 0 1
提前谢谢
答案 0 :(得分:0)
如果您的问题只是将str索引更改为int,则可以使用
df1_new_1.reset_index(drop=True)
如果要保留字符串中的值,可以使用
df1_new_1.index.str.extract(r'\d+')
出局:
Int64Index([123, 124, 125], dtype='int64')