[英]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.