【发布时间】:2016-11-17 16:27:04
【问题描述】:
假设我有一个像这样的数据框
import pandas as pd
df = pd.DataFrame([[1, 2, 1], [1, 3, 2], [4, 6, 3], [4, 3, 4], [5, 4, 5]], columns=['A', 'B', 'C'])
>> df
A B C
0 1 2 1
1 1 3 2
2 4 6 3
3 4 3 4
4 5 4 5
原始表格更复杂,列和行更多。
我想获得满足某些条件的第一行。例子:
- 获取 A > 3 的第一行(返回第 2 行)
- 获取 A > 4 AND B > 3 的第一行(返回第 4 行)
- 获取 A > 3 AND (B > 3 OR C > 2) 的第一行(返回第 2 行)
但是,如果没有任何行满足特定条件,那么我想在按 A 降序排序(或其他情况下按 B、C 等)排序后获得第一行
- 获取 A > 6 的第一行(通过 A desc 排序返回第 4 行并获取第一个)
我能够通过迭代数据框来做到这一点(我知道胡扯:P)。所以,我更喜欢用pythonic的方式来解决它。
【问题讨论】:
-
第一行 A > 4 是 4,你能检查你正在搜索的测试
-
@Boud 抱歉。输入错误:(
-
所以,@Kartik 我将使用布尔索引,如果返回的数据框为空,那么我手动对其进行排序并获取第一行?这是最合适的方式?
-
布尔索引可能比你想要的要多,因为它必须贯穿整个 DataFrame。如果第一行是您想要的,您应该能够立即找到,而不管 DataFrame 的大小。