Как извлечь часть строковых данных из определенного столбца в пандах?Python

Программы на Python
Anonymous
Как извлечь часть строковых данных из определенного столбца в пандах?

Сообщение Anonymous »

У меня есть фрейм данных, в котором я хочу создать новый столбец для информации о состоянии данного учреждения — df['ict_state']. Эта информация предоставляется в другом столбце кадра данных — df['ict_name'], который содержит дополнительную информацию в виде строкового типа. Обычно нужная мне информация находится сразу после первого символа «-» строки. Таким образом, чтобы получить точную информацию о состоянии, необходимо выполнить некоторую обработку.
Пример: если ячейка содержит строку «ict1 - rio - Laboratorio Nuclear», новый столбец получит строка «рио». Если ячейка содержит строку «ict2 - bsb», новый столбец получит строку «bsb». Если ячейка содержит строку «ict3», новый столбец получит строку «nan».
Я пытался применить цикл for в определенном столбце, чтобы преобразовать строку ячейку в списке и получить второй элемент этого списка.
Пример:

Код: Выделить всё

matrix_entrada = [
(1, 'ictX'),
(2, 'ict - rio - estudos nucleares'),
(3, 'ict - ba - laboratorio IA'),
(4, 'ict132 - sp')]
df = pd.DataFrame(matrix_entrada, columns=['id', 'ict_name'])

for ict in df['ict_name']:
if len(ict.split('-')) > 1:
df['ict_state'] = ict.split('-')[1]
else:
df['ict_state'] = 'nan'

df
Выход:

Код: Выделить всё

    id  ict_name                       ict_state
0   1   ictX                           sp
1   2   ict - rio - estudos nucleares  sp
2   3   ict - ba - laboratorio IA      sp
3   4   ict132 - sp                    sp
Ожидаемый результат:

Код: Выделить всё

    id  ict_name                       ict_state
0   1   ictX                           nan
1   2   ict - rio - estudos nucleares  rio
2   3   ict - ba - laboratorio IA      ba
3   4   ict132 - sp                    sp
Что я делаю не так?

Подробнее здесь: https://stackoverflow.com/questions/787 ... -in-pandas

Вернуться в «Python»