Как изменить тип столбца в пандах без имени столбца? - PullRequest
0 голосов
/ 08 ноября 2018

У меня проблема с типом данных.

Пожалуйста, предположите, что это мой примерный фрейм данных.

class1 class2 docid
 A123   08/9   X123
 A123   08/1   X123
 A124   08/1   X124
 A124   08/2   X124
 A125   08/3   X125

Я объединил class1 и class2, затем назвал class3

  class3     docid
 A123,08/9   X123
 A123,08/1   X123
 A124,08/1   X124
 A124,08/2   X124
 A125,08/3   X125

, а затем сделать матрицу с помощью get_dummies

df1 = pd.get_dummies(df.docid).sort_index(level=0).max(level=[0,1])
df1

и получите такие результаты

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

и затем я отбросил class3, а затем транспонировал эту матрицу, чтобы вычислить сходство Жакара по docid

df1_new = df1.drop(['class3'], axis=1)
df1_new_1 = df1_new.transpose()
df1_new_1

и результаты такие:

     0 1 2 3 4 
X123 1 1 0 0 0
X124 0 0 1 1 0
X125 0 0 0 0 1

Исходя из этого, столбец не имеет имени, тогда я хотел бы спросить, как я могу изменить X123 X124 X125 на 0 1 2 или изменить только тип данных со строки на int? потому что, когда я использую этот результат для вычисления сходства Жакара, он появляется

ValueError: invalid literal for int() with base 10: 'X123'

заранее спасибо

1 Ответ

0 голосов
/ 08 ноября 2018

если ваша проблема состоит в том, чтобы просто изменить индекс str на int, вы можете использовать

df1_new_1.reset_index(drop=True)

если вы хотите сохранить значения из строки, вы можете использовать

df1_new_1.index.str.extract(r'\d+')

Из:

Int64Index([123, 124, 125], dtype='int64')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...