Поворот строки в несколько столбцов с помощью панд - PullRequest
1 голос
/ 07 марта 2019

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

import pandas as pd
d = {'col1': ['a>b>c']}
df = pd.DataFrame(data=d)
print(df)
"""
   col1
0  a>b>c
"""

и мой желаемый результат должен быть таким:

d1 = {'col1': ['a>b>c'],'col11': ['a'],'col12': ['b'],'col13': ['c']}
d1 = pd.DataFrame(data=d1)
print(d1)
"""    
     col1 col11 col12 col13
 0  a>b>c     a     b     c
"""

Мне нужно запустить метод .split('>'), но потом я нене знаю, как идти дальше.Любая помощь?

Ответы [ 2 ]

0 голосов
/ 07 марта 2019

Вы можете просто разделить, используя str.split('>') и развернуть фрейм данных

import pandas as pd
d = {'col1': ['a>b>c'],'col2':['a>b>c']}
df = pd.DataFrame(data=d)
print(df)
col='col1'
#temp = df[col].str.split('>',expand=True).add_prefix(col)
temp = df[col].str.split('>',expand=True).rename(columns=lambda x: col + str(int(x)+1))
temp.merge(df,left_index=True,right_index=True,how='outer')

Из:

     col1 col11 col12 col13
 0  a>b>c     a     b     c

Incase, если вы хотите сделать это на нескольких столбцах, вы также можете взять

for col in df.columns:
    temp = df[col].str.split('>',expand=True).rename(columns=lambda x: col + str(int(x)+1))
    df = temp.merge(df,left_index=True,right_index=True,how='outer')

Из:

   col21 col22 col23 col11 col12 col13  col1   col2
0   a     b      c     a     b      c   a>b>c a>b>c
0 голосов
/ 07 марта 2019

Использование split:

d = {'col1': ['a>b>c']}
df = pd.DataFrame(data=d)

df = pd.concat([df, df.col1.str.split('>', expand=True)], axis=1)
df.columns = ['col1', 'col11', 'col12', 'col13']
df

Выход:

    col1    col11   col12   col13
0   a>b>c   a        b        c
...