#python #pandas
Вопрос:
Нужно выполнить поиск «,» в столбце фрейм данных. После обнаружения разделите столбец на 2 столбца фрейма данных.
Value
=====
59.5
59.5, 5
60
60,5
желаемый результат ниже:
value1 value2
====== ======
59.5
59.5 5
60
60 5
Попробовал приведенный ниже код:
df['value1'], df_merge['value2'] = df['value'].str.split(',', 1).str
df['value1'], _, df_merge['value2'] = str(df['value']).partition(',')
Ни один из них не помогает.
Ответ №1:
df= df['Value'].str.split(',', expand=True).rename(columns={0:'A',1:'B'})
A B
0 59.5 None
1 59.5 5
2 60 None
3 60 5
Если вы хотите сохранить другие столбцы в соответствии с вашими комментариями ниже, используйте следующий код;
df=df.join(df['Value'].str.split(',', expand=True).rename(columns={0:'A',1:'B'}))
Value A B
0 59.5 59.5 None
1 59.5,5 59.5 5
2 60 60 None
3 60,5 60 5
Комментарии:
1. Попробовал приведенный выше код. Но после назначения у меня есть только столбец A, я теряю все остальные столбцы в своем фрейме данных. Мой код: df_merge= df_merge[‘значение pdh_»]. str.разделить(‘,’, развернуть=True).переименовать(столбцы={0:’pdh_age’,1:’pdh_service’})
2. Попробуй
df=df.join(df['Value'].str.split(',', expand=True).rename(columns={0:'A',1:'B'}))
3. Теперь отсутствует только последняя колонка B. Остальные все столбцы отображаются.
4. df_merge= df_merge.join(df_merge[‘значение pdh_»]. str.разделение(‘,’, развернуть=True).переименование(столбцы={0:’pdh_age’,1:’pdh_service’})) Отсутствует столбец pdh_service. Пожалуйста, чк.
5. Не могу воспроизвести вашу проблему с данными, которые вы предоставили.join использует индекс, поскольку в процессе разделения в индексе не происходит никаких изменений, данные не должны быть потеряны. Также не имеет смысла добавлять 1 столбец, а другой-нет. проблема где — то в ваших данных. Код должен работать. Вы также можете попробовать использовать код, предоставленный @SeaBean.
Ответ №2:
Чтобы расширить существующий фрейм данных, просто используйте:
df[['Value1', 'Value2']] = df['Value'].str.split(',', expand=True)
Результат:
Value Value1 Value2
0 59.5 59.5 None
1 59.5, 5 59.5 5
2 60 60 None
3 60, 5 60 5