Как разбить столбец на несколько столбцов, где имя этих столбцов меняется - PullRequest
0 голосов
/ 01 мая 2020

Я определил фрейм данных в «функцию», в которой имя каждого столбца в фреймах данных постоянно меняется, поэтому я не могу указать имя этого столбца, а затем разделить его на несколько столбцов. Например, я не могу сказать df ['name'], а затем разбить его на множество столбцов. Количество столбцов и строк этих информационных кадров не является постоянным. Мне нужно разделить любой столбец, содержащий более одного элемента на множество компонентов (столбцов).

Например:

Это один из моих кадров данных:

name/one                                                name/three         

(192.26949,)                                      (435.54,436.65,87.3,5432) 

(189.4033245,)                                (45.51,56.612, 54253.543, 54.321) 

(184.4593252,)                                 (45.58,56.6412,654.876,765.66543) 

Я хочу преобразовать его в:

name/one                 name/three1      name/three2     name/three3       name/three4 

192.26949                  435.54          436.65            87.3              5432 


189.4033245                45.51           56.612          54253.543          54.321 

184.4593252                45.58           56.6412          654.876          765.66543

1 Ответ

1 голос
/ 01 мая 2020

Решение, если все данные являются кортежами во всех строках и во всех столбцах используется concat с конструктором DataFrame и DataFrame.add_prefix:

df = pd.concat([pd.DataFrame(df[c].tolist()).add_prefix(c) for c in df.columns], axis=1)
print (df)
    name/one0  name/three0  name/three1  name/three2  name/three3
0  192.269490       435.54     436.6500       87.300   5432.00000
1  189.403324        45.51      56.6120    54253.543     54.32100
2  184.459325        45.58      56.6412      654.876    765.66543

Если возможно, строка repr кортежей:

import ast

L = [pd.DataFrame([ast.literal_eval(y) for y in df[c]]).add_prefix(c) for c in df.columns]
df = pd.concat(L, axis=1)
print (df)
    name/one0  name/three0  name/three1  name/three2  name/three3
0  192.269490       435.54     436.6500       87.300   5432.00000
1  189.403324        45.51      56.6120    54253.543     54.32100
2  184.459325        45.58      56.6412      654.876    765.66543
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...