Организация кадра данных из одной строки в несколько столбцов в python - PullRequest
0 голосов
/ 06 января 2020

У меня есть фрейм данных, который содержит один столбец, но несколько значений в строке. Мне нужно правильно транспонировать и добавлять данные из каждой строки.

Фрейм данных выглядит следующим образом:

l1     l2
0      a:1
       b:2
       c:3
1      a:11
       b:12
       c:13
2      a:21
       b:22
       c:33

Имя столбца l1 является столбцом индекса, а столбец с именем l2 содержит имя параметра и значение. Мне нужно рассмотреть столбец l2 и расположить кадр данных как желаемый вывод.

Требуемый вывод выглядит следующим образом:

a     b    c
1     2    3
11    12   13
21    22   33

Код, который я пробовал, транспонируется .

df1=df.T

Но он должен транспонировать каждое значение строки в столбцы.

1 Ответ

1 голос
/ 07 января 2020

Сначала преобразуйте индекс l1 в столбец, затем замените пустые строки на пропущенные значения и заполните их вперёд, также для столбца l2 используется Series.str.split для новых 2 столбцов, последнее использование DataFrame.pivot:

df = df.reset_index()
df['l1'] = df['l1'].replace('',np.nan).ffill()
df[['l21','l22']] = df['l2'].str.split(':', expand=True)
print (df)
  l1    l2 l21 l22
0  0   a:1   a   1
1  0   b:2   b   2
2  0   c:3   c   3
3  1  a:11   a  11
4  1  b:12   b  12
5  1  c:13   c  13
6  2  a:21   a  21
7  2  b:22   b  22
8  2  c:33   c  33

df = df.pivot('l1','l21','l22')
print (df)
l21   a   b   c
l1             
0     1   2   3
1    11  12  13
2    21  22  33
...