繁体   English   中英

如何将 Pandas 中的数值和分类值列作为单独的列表?

[英]How to get columns with Numeric Values and Categorical Values in Pandas as separate lists?

这是我的代码:

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(第二、第四)的列。 我正在学习熊猫。 谁能帮助我如何实现这一要求?

提前致谢。

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']

尝试这个:

True_columns = columns[columns].index.tolist()
False_columns = columns[~columns].index.tolist()
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 的列列表。

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

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM