首页 > 解决方案 > 无法从提取的布尔值中打印数据帧

问题描述

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

标签: pythonpandas

解决方案


从您的帖子(格式错误)中,我重新创建了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()]

推荐阅读