首页 > 解决方案 > Pandas - 检查数据框是否在任何列中具有负值

问题描述

我想知道如何检查熊猫数据框是否在 1 列或更多列中具有负值并仅返回布尔值(True 或 False)。你能帮忙吗?

In[1]: df = pd.DataFrame(np.random.randn(10, 3))

In[2]: df
Out[2]:
          0         1         2
0 -1.783811  0.736010  0.865427
1 -1.243160  0.255592  1.670268
2  0.820835  0.246249  0.288464
3 -0.923907 -0.199402  0.090250
4 -1.575614 -1.141441  0.689282
5 -1.051722  0.513397  1.471071
6  2.549089  0.977407  0.686614
7 -1.417064  0.181957  0.351824
8  0.643760  0.867286  1.166715
9 -0.316672 -0.647559  1.331545

预期输出:-

Out[3]: True

标签: pythonpandas

解决方案


实际上,如果速度很重要,我做了一些测试:

df = pd.DataFrame(np.random.randn(10000, 30000))

测试1,最慢:纯熊猫

(df < 0).any().any()
# 303 ms ± 1.28 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

测试 2,更快:切换到 numpy with.values以测试True条目的存在

(df < 0).values.any()
# 269 ms ± 8.19 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

测试 3,可能更快,但并不重要:为整个事情切换到 numpy

(df.values < 0).any()
# 267 ms ± 1.48 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

推荐阅读