这是我的代码:
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(第二,第四)。我正在学习熊猫。谁能帮助我达到这个要求?
谢谢。
答案 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)