如何在熊猫中获取具有数字值和分类值的列作为单独的列表?

时间:2019-07-10 06:35:22

标签: python pandas numpy dataframe

这是我的代码:

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_columns列表中保存所有具有TRUE(第一,第三)的列,而在False_columns列表中保存所有的FALSE(第二,第四)。我正在学习熊猫。谁能帮助我达到这个要求?

谢谢。

4 个答案:

答案 0 :(得分:1)

boolean indexing过滤,对于False_columns的{​​{1}}反转布尔掩码:

~

或者:

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()

另一种解决方案是使用DataFrame.select_dtypes

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

答案 1 :(得分:1)

尝试一下:

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

答案 2 :(得分:0)

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的列的列表。

答案 3 :(得分:0)

谢谢大家的评论。我尝试了下面的方法,它按预期工作。

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)