Почему замена столбцов данных со словарем просто создает nan? - PullRequest
0 голосов
/ 29 апреля 2020

Я хочу заменить столбец 'GeneID' на мой словарь.

Это создает только слова Nan. Кто-нибудь знает, почему это происходит?

 df
Out[107]: 
        Region     GeneID  DistanceValue
0           BG   79677107            0.0
       ...        ...            ...
1097355  CERus       1415            NaN
[1097360 rows x 3 columns]

, заменяя его на final_dictionary1

df["GeneID"] = df["GeneID"].map(final_dictionary1)

whereas final_dictionary1 looks like:

...
 '52856': 'Mtg2',
 '19886': 'Ros1',
 '16008': 'Igfbp2',
 '14747': 'Cmklr1',
 '13401': 'Dmwd',
 '12545': 'Cdc7',
 '28113': 'Tinf2',
 '71833': 'Dcaf7',
 ...}

Это потому, что числа не являются строками? Можно посмотреть, что в df.GeneID хранится? Если это число или строка. Может ли это вызвать ошибку? Или почему он не заменяет его должным образом?

1 Ответ

1 голос
/ 29 апреля 2020

Возможная проблема - сбор пробелов, удалите их с помощью str.strip(), другая проблема - значение из списка, которого нет в столбце GeneID, поэтому создано NaN s:

df["GeneID"] = df["GeneID"].str.strip().map(final_dictionary1)

Или, если возможно, некоторые значения не совпадают и не нуждаются в замене этих значений:

df["GeneID"] = df["GeneID"].str.strip().replace(final_dictionary1)
...