Pandas DataFrame - Создание динамического количества столбцов - PullRequest
0 голосов
/ 29 октября 2018

Данные:

    qid     qualid  val
0   1845631864  227     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
1   1899053658  44  1,3,3,2,2,2,3,3,4,4,4,5,5,5,5,5,5,5
2   1192887045  197     704
3   1833579269  194     139472
4   1497352469  30  120026,170154,152723,90407,63119,80077,178871,...

Проблема:

Числа, разделенные запятыми в столбце val , должны быть представлены в разных столбцах для каждой строки.

Я не знаю, допускает ли это Pandas, но в идеале хотелось бы создать точное n количество столбцов для каждой строки, где n - количество элементов в столбце val .

Если это невозможно, наибольшее количество элементов в val должно быть числом столбцов и строк, где элементы меньше, чем те, которые должны состоять из NaN.

Пример решения 1 для вышеуказанной проблемы:

    qid       qualid  val1  val2  val3        valn-3 valn-2 valn-1 valn
0   1845631864  227     0     0    0    ......  0        0      0    0
1   1899053658  44      1     3    3    ......  5
2   1192887045  197    704
3   1833579269  194   139472
4   1497352469  30    120026 170154 152723.....63119  80077 178871 12313

Альтернативное решение 2 для вышеуказанной проблемы:

    qid       qualid  val1  val2  val3        valn-3 valn-2 valn-1 valn
0   1845631864  227     0     0    0    ......  0        0      0    0
1   1899053658  44      1     3    3    ......  5      NaN    NaN   NaN
2   1192887045  197    704   NaN  NaN   ...... NaN     NaN    NaN   NaN
3   1833579269  194   139472 NaN  NaN   ...... NaN     NaN    NaN   
4   1497352469  30    120026 170154 152723.....63119  80077 178871 12313

1 Ответ

0 голосов
/ 29 октября 2018

Вы можете проверить str.split

pd.concat([df,df.val.str.split(',',expand=True).add_prefix('Val_')],axis=1)
Out[29]: 
          qid  qualid  ...   Val_16 Val_17
0  1845631864     227  ...        0      0
1  1899053658      44  ...        5      5
2  1192887045     197  ...     None   None
3  1833579269     194  ...     None   None
4  1497352469      30  ...     None   None
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...