#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)