Pandas 允许在DataFrame
上进行startswith
选择,例如:
query = "Ali"
people[people.Name.str.startswith(query)]
。这可能会导致类似
Name
Ali
Alice
Alicia
Alistair
...
但是,我想反转选择中的输入,以查找input
以DataFrame
中的值开头的行。
像这样:
query = "Ali"
people[query.startswith(people.Name)]
例如,这可能会选择名称Al
和Ali
。
这段代码显然不起作用,这似乎不是与此示例相关的明智之举,但这就是我想用我的数据实现的目标。
有人知道我如何实现这一目标吗?
准备工作
import pandas as pd
people = pd.DataFrame()
people["FullName"] = ["Alice Cooper", "Ali","Aloy"]
input_ = "Alice"
备选方案 1:布尔索引
people[[input_.startswith(i) for i in people.FullName]] # passes [False, True, False]
1000 个环路,最佳 3 个:每个环路 937 μs
备选方案 2(感谢@Abdou(:使用 .apply(( 和 lambda 对系列的值调用函数
people[people.FullName.apply(lambda s: input_.startswith(s))]
1000 个环路,三选一:每环路 1.38 ms
输出:
FullName
1 Ali