У меня есть датафрейм со столбцами, состоящими из списков чисел:
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.
Самый простой способ - использовать 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']]
Обязательная ссылка "зачем нужен список?": Для петель с пандами.