Как получить столбцы с числовыми значениями и категориальными значениями в Pandas как отдельные списки? - PullRequest
2 голосов
/ 10 июля 2019

Это мой код:

df = pd.DataFrame({'First':[1,2,3,4],'Second':[1,2,3,'string'],'Third':[1,2,3,4],'Fourth':['string','lava','cake','Volcano']})
columns = df.applymap(np.isreal).all()
print(type(columns))
print(columns)
True_columns = []
False_columns = []

Вывод:

<class 'pandas.core.series.Series'>
First      True
Second    False
Third      True
Fourth    False
dtype: bool

Мне нужно сохранить все столбцы с TRUE (первый, третий) в списке True_columns.и все ЛОЖЬ (Второй, Четвертый) в списке False_columns. Я изучаю панд.Может ли кто-нибудь помочь мне, как выполнить это требование?

Заранее спасибо.

Ответы [ 4 ]

1 голос
/ 10 июля 2019

Попробуйте это:

True_columns = columns[columns].index.tolist()
False_columns = columns[~columns].index.tolist()
1 голос
/ 10 июля 2019

Фильтр по boolean indexing и для False_columns инвертированной логической маски по ~:

True_columns  = df.columns[columns].tolist()
print (True_columns)
['First', 'Third']

False_columns = df.columns[~columns].tolist()
print (False_columns)
['Second', 'Fourth']

Или:

True_columns = columns.index[columns].tolist()
False_columns = columns.index[~columns].tolist()

Или:

True_columns = columns[columns].index.tolist()
False_columns = columns[~columns].index.tolist()

Другое решение - это использование DataFrame.select_dtypes:

True_columns = df.select_dtypes(np.number).columns.tolist()
print (True_columns)
['First', 'Third']

False_columns = df.select_dtypes('object').columns.tolist()
print (False_columns)
['Second', 'Fourth']
0 голосов
/ 10 июля 2019

Спасибо всем за комментарии.Я попробовал ниже, и это работает, как ожидалось.

df = pd.DataFrame({'First':[1,2,3,4],'Second':[1,2,3,'string'],'Third':[1,2,3,4],'Fourth':['string','lava','cake','Volcano']})
columns = df.applymap(np.isreal).all()
True_columns = df.columns[columns].tolist()
False_columns = df.columns[~columns].tolist()
print(True_columns,False_columns)
0 голосов
/ 10 июля 2019
numeric_cols = [column for column in df.columns if df[column].dtype != 'object']
string_cols = [column for column in df.columns if df[column].dtype == 'object']

Это даст вам список столбцов с числовыми и нечисловыми dtypes.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...