Получение первого элемента из каждого списка в столбце списков

1

У меня есть датафрейм со столбцами, состоящими из списков чисел:

idx codes       new_column
0   [12,18,5]
1   [22,15]
2   [4]
3   [15,1]

Как я могу добавить новый столбец в фрейм данных, состоящий из первой записи списка столбца кодов:

idx codes     new_column
0   [12,18,5]  12
1   [22,15]    22
2   [4]         4
3   [15,1]     15

I tried:
    df['new_column']=df['codes'][0]

However, that didn't work.
Теги:
pandas
dataframe

1 ответ

5
Лучший ответ

Самый простой способ - использовать str.get

# df['new_column'] = df['codes'].str.get(0)
df['new_column'] = df['codes'].str[0]

Тем не менее, я бы предложил список для понимания скорости, если нет NaN:

df['new_column'] = [l[0] for l in df['codes']]

Если списки могут быть пустыми, вы можете сделать что-то вроде:

df['new_column'] = [l[0] if len(l) > 0 else np.nan for l in df['codes']]

Для обработки NaN с пониманием списка, вы можете использовать loc для подмножества и назначения обратно.

m = df['codes'].notna()
df.loc[m, 'new_column'] = [
    l[0] if len(l) > 0 else np.nan for l in df.loc[m, 'codes']]

Обязательная ссылка "зачем нужен список?": Для петель с пандами.

  • 0
    Я попробовал df ['codes']. Str [0] и на 285 000 записей это было очень быстро, около 2 секунд. будет ли понимание списка еще быстрее?
  • 0
    @afshin Да! Попробуй.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню