在pandas DataFrame中,我有一系列的布尔值。为了过滤到布尔值为True的行,我可以使用:df[df.column_x]
我认为,为了只过滤列为False的行,我可以使用:df[~df.column_x]
。我觉得我以前做过,并且已经将其视为接受的答案。
但是,这失败了,因为~df.column_x
将值转换为整数。见下文。
import pandas as pd . # version 0.24.2
a = pd.Series(['a', 'a', 'a', 'a', 'b', 'a', 'b', 'b', 'b', 'b'])
b = pd.Series([True, True, True, True, True, False, False, False, False, False], dtype=bool)
c = pd.DataFrame(data=[a, b]).T
c.columns = ['Classification', 'Boolean']```
print(~c.Boolean)
0 -2
1 -2
2 -2
3 -2
4 -2
5 -1
6 -1
7 -1
8 -1
9 -1
Name: Boolean, dtype: object
print(~b)
0 False
1 False
2 False
3 False
4 False
5 True
6 True
7 True
8 True
9 True
dtype: bool
基本上,我可以使用c[~b]
,但不能使用c[~c.Boolean]
我只是梦想着可以使用这种功能吗?
答案 0 :(得分:15)
啊,由于您使用ValueError Traceback (most recent call
last)
<ipython-input-61-b17725dbe418> in <module>
----> 1 feature_processing.fit_transform(dftrf)
~/.conda/envs/test_py3/lib/python3.6/site-packages/sklearn/pipeline.py in
fit_transform(self, X, y, **fit_params)
298 Xt, fit_params = self._fit(X, y, **fit_params)
299 if hasattr(last_step, 'fit_transform'):
--> 300 return last_step.fit_transform(Xt, y, **fit_params)
301 elif last_step is None:
302 return Xt
~/.conda/envs/test_py3/lib/python3.6/site-packages/sklearn/pipeline.py in
fit_transform(self, X, y, **fit_params)
799 self._update_transformer_list(transformers)
800 if any(sparse.issparse(f) for f in Xs):
--> 801 Xs = sparse.hstack(Xs).tocsr()
802 else:
803 Xs = np.hstack(Xs)
~/.local/lib/python3.6/site-packages/scipy/sparse/construct.py in
hstack(blocks, format, dtype)
463
464 """
--> 465 return bmat([blocks], format=format, dtype=dtype)
466
467
~/.local/lib/python3.6/site-packages/scipy/sparse/construct.py in
bmat(blocks, format, dtype)
584
exp=brow_lengths[i],
585
got=A.shape[0]))
--> 586 raise ValueError(msg)
587
588 if bcol_lengths[j] == 0:
ValueError: blocks[0,:] has incompatible row dimensions. Got
blocks[0,1].shape[0] == 1, expected 999000.
构造函数创建了c
,因此DataFrame
,
第一,我们来看一下T
之前的情况:
T
因此pd.DataFrame([a, b])
Out[610]:
0 1 2 3 4 5 6 7 8 9
0 a a a a b a b b b b
1 True True True True True False False False False False
将使每一列 仅具有一列 pandas
,否则将转换为dtype
。
在object
之后,我们每列具有哪种数据类型
您的T
中的dtypes
:
c
c.dtypes
Out[608]:
Classification object
Boolean object
Boolean
成为columns
类型,这就是为什么您为object
获得意外输出的原因
如何解决? --- ~c.Boolean
concat