Найдите, если «,» присутствует в столбце фрейма данных, и разделите его на 2 столбца фрейма данных

#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