Как объединить два уникальных массива и удалить 'nan'? - PullRequest
0 голосов
/ 16 февраля 2020

Используя Набор данных Pokemon , я хочу извлечь все уникальные типы в столбцах: «Тип 1» и «Тип 2» и распечатать их после. До сих пор я смог объединить уникальные значения из обоих столбцов в массив. Теперь у меня проблемы с удалением 'nan' из массива.

Мой код:

import pandas as pd
import numpy as np
df = pd.read_csv("/Users/edwinandrew/Documents/Datasets/Pokemon.csv")
type_class1 = df['Type 1'].unique()
type_class2 = df['Type 2'].unique()
all_types = np.concatenate((type_class1, type_class2))
print(all_types)

Вывод:

['Grass' 'Fire' 'Water' 'Bug' 'Normal' 'Poison' 'Electric' 'Ground'
 'Fairy' 'Fighting' 'Psychic' 'Rock' 'Ghost' 'Ice' 'Dragon' 'Dark' 'Steel'
 'Flying' 'Poison' nan 'Flying' 'Dragon' 'Ground' 'Fairy' 'Grass'
 'Fighting' 'Psychic' 'Steel' 'Ice' 'Rock' 'Dark' 'Water' 'Electric'
 'Fire' 'Ghost' 'Bug' 'Normal']

Я пытался использовать x = x[~numpy.isnan(x)] для Посмотрим, удалит ли это значение nan, но я получил ошибку. Как лучше всего решить эту проблему?

Ответы [ 3 ]

0 голосов
/ 16 февраля 2020

Используйте это

type_class1 = df ['Type 1']. Dropna (). Unique () type_class2 = df ['Type 2']. Dropna (). Unique ()

Или используйте метод fillna ()

0 голосов
/ 16 февраля 2020

stack + dropna

Создайте одну серию, отбросьте пропущенные значения и вызовите уникальную.

import pandas as pd
import numpy as np

df = pd.DataFrame({'Type_1': ['Grass', 'Fire', 'Steel', 'Ghost'],
                   'Type_2': [np.NaN, 'Water', 'Fire', 'Grass']})

df[['Type_1', 'Type_2']].stack().dropna().unique()
#array(['Grass', 'Fire', 'Water', 'Steel', 'Ghost'], dtype=object)
0 голосов
/ 16 февраля 2020

вам нужно использовать dropna

type_class1 = df['Type 1'].dropna().unique()
type_class2 = df['Type 2'].dropna().unique()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...