python - 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
解决方案
实际上,如果速度很重要,我做了一些测试:
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)
推荐阅读
- angular - 在功能模块中声明服务的最佳方式是什么?
- git - 无法访问 repo:OpenSSL SSL_connect: SSL_ERROR_SYSCALL 连接到 github.com:443?
- sql - 带有简单 SELECT/FROM/WHERE 语句的 SQL Teradata 错误 3704 - 找不到错误
- javascript - 如何在 TypeScript 中使用 document.getElementById() 方法?
- rx-java2 - 为什么doOnComplete会立即执行而不管延迟()
- windows - 在 Windows 上链接 SHARED 库
- spring-boot - AWS Lambda - Spring Boot 未处理请求
- visual-studio - Visual Studio 在括号内快速键入字符串
- compilation - 在 AWS Lambda 上将 PDF 转换为 JPEG
- xamarin - 如何在 XAMARIN android 应用程序中向 HockeyApp SDK 发送已处理的异常?