Передача отсутствующего значения (None) с помощью Loc, чтобы оно было заменено на None вместо жалобы Pandas

#python #python-3.x #database #pandas

#python #python-3.x #База данных #pandas

Вопрос:

У меня есть следующий фрейм данных pandas (df):

           gene_id       chrom      start        end
0         EN02          1           577        647
1         EN12          2           648       1601
2         EN15          3          1602       1670
3         EN86          4          1671       3229
  

и список индексов следующим образом:

 ls_indx = [0, 1, 3, None]
  

Я хочу сделать следующее, чтобы найти эти индексы во фрейме данных следующим образом:

 genes_snp = df. gene_id[overlaps] 
  

Когда я исключаю это, я получаю следующую ошибку:

 KeyError: "Passing list-likes to .loc or [] with any missing labels is no longer supported. The following labels were missing: Index([None])
  

Я понимаю, что означает ошибка, но я хочу получить результат с теми индексами, которые сопоставляются во фрейме данных, а также с теми, которые отсутствуют, и мне нужно, чтобы они были сохранены и помечены как отсутствующие:

     gene_id
0        EN02
1        EN12
3        EN86
4        None
  

Как я могу это сделать?

Заранее большое вам спасибо.

Ответ №1:

Попробуйте с reindex

 ls_indx = [0, 1, 3, None]
df.gene_id.reindex(ls_indx)
Out[40]: 
0      EN02
1      EN12
3      EN86
NaN     NaN
Name: gene_id, dtype: object
  

Комментарии:

1. ты быстрее меня 🙂 1

2. Отлично, но когда я записываю результирующий фрейм данных в файл, он не включает None для отсутствующих значений, а вместо этого пробелы, почему это ?.

3. @aBiologist ммм, какой это тип файла? вы назначили его обратно перед записью в файл?

4. Неважно, я исправил это из df.to_csv, присвоив na_rep=»None», и это сработало, может быть, было бы лучшее решение. Ваш ответ отличный, спасибо за ваше решение и за ваш быстрый ответ. Я приму ваш ответ, @BEN_YO за спасение 👍

5. @aBiologista yw 🙂 счастливого кодирования ~