Преобразование кадра данных из широкого в длинный - панды - PullRequest
0 голосов
/ 29 апреля 2018

У меня есть такой фрейм данных:

index    S_1 S_2 S_3 S_4
 0        1    0   0   1
 1        1    1  Nan Nan

Я пытаюсь изменить его с длинного на широкое. Например.

index num S
 0     1  1
 0     2  0
 0     3  0
 0     4  1
 1     1  1
 1     2  1
 1     3  Nan
 1     4  Nan

Я пробовал следующий код, основанный на этом ответе, но я получаю следующую ошибку:

matches_df.columns = matches_df.columns.str.split('_', expand=True)

TypeError: объект типа 'float' не имеет len ()

Почему я не могу разделить на "_"? В столбцах есть другая информация, которую я хотел бы сохранить.

1 Ответ

0 голосов
/ 29 апреля 2018

Есть pandas.wide_to_long, что хорошо, когда в столбцах есть такие заглушки.

import pandas as pd

df.reset_index(inplace=True,drop=True)
df['id'] = df.index
df = pd.wide_to_long(df, stubnames='S_', i='id', j='num').reset_index().rename(columns={'S_':'S'})

#  id num  index    S
#0   0   1      0  1.0
#1   1   1      1  1.0
#2   0   2      0  0.0
#3   1   2      1  1.0
#4   0   3      0  0.0
#5   1   3      1  NaN
#6   0   4      0  1.0
#7   1   4      1  NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...