Как решить 'Индекс содержит повторяющиеся записи', не может изменить форму: разделение столбца на набор из 58 столбцов - PullRequest
0 голосов
/ 24 декабря 2018

У меня есть набор данных с 58 столбцами, и я хочу разделить один столбец с именами, разделенными запятой.Ниже приведен пример 4 столбцов из всего набора данных с 50+ столбцами.

Player Deal_Number Name_Group     City
A      1           ABC, BGC, AGD  Bangalore
A      1           ABC, BGC, AGD  New York
A      1           ABC, BGC, AGD  London

В «Name_Group» будут дубликаты, но в целом, если мы увидим каждую строку со всеми 50+ столбцами вместе, не будетдубликаты.Я пытаюсь разделить поле «Name_Group», которое фактически повторяется для каждого города.

Я использую следующий код:

MS4.set_index(['Name_Group'])
   .stack()
   .str.split(',', expand=True)
   .stack()
   .unstack()
   .reset_index(-1, drop=True)
   .reset_index()

Я получаю следующую ошибку и запрашиваю помощь в разделении данных.

'ValueError: Индекс содержит повторяющиеся записи, не может изменить форму'

В дополнение к вышесказанному, я попробовал следующий подход.

  lst_col = 'Name_Group'
    x = MS4.assign(**{lst_col:MS4[lst_col].str.split(',')})

    pd.DataFrame({
              col:np.repeat(x[col].values, x[lst_col].str.len())
              for col in x.columns.difference([lst_col])
            }).assign(**{lst_col:np.concatenate(x[lst_col].values)}) 
                [x.columns.tolist()]

Здесь я получаю TypeError: Невозможно привести массивданные из dtype ('float64') в dtype ('int64') по правилу 'safe'

Спасибо, Шринивас

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...