"Invert"从熊猫中的数据帧选择开始



Pandas 允许在DataFrame上进行startswith选择,例如:

query = "Ali"
people[people.Name.str.startswith(query)]

。这可能会导致类似

Name
Ali
Alice
Alicia
Alistair
...

但是,我想反转选择中的输入,以查找inputDataFrame中的值开头的行。

像这样:

query = "Ali"
people[query.startswith(people.Name)]

例如,这可能会选择名称AlAli

这段代码显然不起作用,这似乎不是与此示例相关的明智之举,但这就是我想用我的数据实现的目标。

有人知道我如何实现这一目标吗?

准备工作

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

最新更新