如何在没有列名的情况下更改熊猫列的类型?

时间:2018-11-08 03:06:11

标签: python pandas numpy

我对数据类型有疑问。

请假定这是我的示例数据框。

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

提前谢谢

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')