Разделить несколько значений внутри столбца

#python-3.x #pandas

#python-3.x #pandas

Вопрос:

Я хочу получить значения col1 в 3 разных столбцах с отдельными заголовками.

       Date/Time                      col1
0     2019/03/20 10:00:09     212.0/212.0/212.0
  

до сих пор я пытался,

 import pandas as pd        
data1 = pd.read_csv('file1.csv')
s= pd.Series(data1['col1'])    
s.str.split(pat = '/', expand=True)

       0        1       2
0     212.0   212.0   212.0
  

теперь, как я мог бы поместить заголовки и аккумулировать их в data1.

Ответ №1:

Предполагая, что s в вашем выводе показан фрейм данных, вы можете merge преобразовать этот фрейм данных в исходный data1 и переименовать столбцы с помощью df.rename :

 data1.merge(s, left_index=True, right_index=True).rename({0: 'colA', 1: 'colB', 2: 'colC'}, axis=1)

    Datetime            col1                colA    colB    colC
0   2019/03/20 10:00:09 212.0/212.0/212.0   212.0   212.0   212.0
1   2019/03/20 10:30:09 222.0/222.0/222.0   222.0   222.0   222.0
2   2019/03/20 11:00:09 232.0/232.0/232.0   232.0   232.0   232.0
  

или, если у вас есть исходный фрейм данных data1 , вы можете сделать это за один шаг:

 data1[['colA','colB','colC']] = data1.col1.str.split('/', expand=True)

    Datetime            col1                colA    colB    colC
0   2019/03/20 10:00:09 212.0/212.0/212.0   212.0   212.0   212.0
1   2019/03/20 10:30:09 222.0/222.0/222.0   222.0   222.0   222.0
2   2019/03/20 11:00:09 232.0/232.0/232.0   232.0   232.0   232.0
  

Комментарии:

1. Я выбрал второе решение, с небольшой настройкой, оно работает нормально. p= data1[‘col_name’] data1[[‘col1′,’col2’, ‘col3’]] =p.str.split(‘/’, развернуть=True)