Это мой код:

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 (второй, четвертый) в списке False_columns. Я изучаю панд. Может ли кто-нибудь помочь мне, как достичь этого требования?

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

2
Sabari Vishnu Jayanthan J 10 Июл 2019 в 09:35

4 ответа

Лучший ответ

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

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
Sabari Vishnu Jayanthan J 10 Июл 2019 в 14:08
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.

0
Sachin Prabhu 10 Июл 2019 в 07:20

Фильтровать по 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']
1
jezrael 10 Июл 2019 в 07:57

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

True_columns = columns[columns].index.tolist()
False_columns = columns[~columns].index.tolist()
1
U10-Forward 10 Июл 2019 в 06:38