python - 无法从提取的布尔值中打印数据帧
问题描述
import pandas as pd
diamonds = pd.read_csv('diam.csv')
print(diamonds.head())
Unnamed: 0 carat cut color clarity depth table price x y z quality?color
0 0 0.23 Ideal E SI2 61.5 55.0 326 3.95 3.98 2.43 Ideal,E
1 1 0.21 Premium E SI1 59.8 61.0 326 3.89 3.84 2.31 Premium,E
2 2 0.23 Good E VS1 56.9 65.0 327 4.05 4.07 2.31 Good,E
3 3 0.29 Premium I VS2 62.4 58.0 334 4.20 4.23 2.63 Premium,I
4 4 0.31 Good J SI2 63.3 58.0 335 4.34 4.35 2.75 Good,J
我只想打印object
数据类型
x=diamonds.dtypes=='object'
diamonds.where(diamonds[x]==True)
但我得到这个错误:
unalignable boolean Series provided as indexer (index of the boolean Series and of the indexed object do not match).
解决方案
从您的帖子(格式错误)中,我重新创建了diamonds DataFrame,得到如下结果:
Unnamed: 0 carat cut color clarity depth table price x y z quality?color
0 0 0.23 Ideal E SI2 61.5 55.0 326 3.95 3.98 2.43 Ideal,E 1
1 1 0.21 Premium E SI1 59.8 61.0 326 3.89 3.84 2.31 Premium,E 2
2 2 0.23 Good E VS1 56.9 65.0 327 4.05 4.07 2.31 Good,E 3
3 3 0.29 Premium I VS2 62.4 58.0 334 4.20 4.23 2.63 Premium,I 4
4 4 0.31 Good J SI2 63.3 58.0 335 4.34 4.35 2.75 Good,J
当您运行x = diamonds.dtypes == 'object'
并打印x时,结果是:
Unnamed: 0 False
carat False
cut True
color True
clarity True
depth False
table False
price False
x False
y False
z False
quality?color True
dtype: bool
它是一个布尔向量,包含问题的答案是对象类型的这一列?
请注意diamonds.columns.where(x).dropna().tolist()
打印:
['cut', 'color', 'clarity', 'quality?color']
即具有对象类型的列的名称。
因此,要打印对象类型的所有列,您应该运行:
diamonds[diamonds.columns.where(x).dropna()]