gpt4 book ai didi

python - Pandas: bool /谓词搜索的首选习语

转载 作者:太空宇宙 更新时间:2023-11-03 16:45:32 25 4
gpt4 key购买 nike

我有两个问题,它们在下面的帖子中都以粗体显示。

考虑这个DataFrame:

from pandas import DataFrame

df_1 = DataFrame ({
"x" : ["a - {}".format(i) for i in range(2)] +
["b - {}".format(i) for i in range(2)] ,
"y" : range(4)
})
df_1

enter image description here

假设我想要 x 值以字母“a”开头的所有行。

以下是此类搜索的首选习惯用法吗?

df_1[df_1["x"].apply(lambda val : val.startswith("a"))]

enter image description here

我在 Pandas 中发现的一件事是,一旦有意义的数据成为 DataFrame 索引,就很难用它做事,尤其是查询它。假设我们现在有:

df_2 = df_1.set_index(["x"], drop=True)
df_2

enter image description here

我发现,如果我搜索索引,要做同样的搜索,需要做更多的工作。

以下是此类搜索的首选习惯用法吗?

df_2.iloc[[i for i,val in enumerate(df_2.index.tolist()) if val.startswith("a")], :]

enter image description here

最佳答案

在这两种情况下,我都会使用矢量化 .str.startswith(...) 方法。它不一定性能更高,只是更干净。请参阅working with text documentation了解更多。

In [22]: df_1[df_1["x"].str.startswith("a")]
Out[22]:
x y
0 a - 0 0
1 a - 1 1

In [23]: df_2[df_2.index.str.startswith('a')]
Out[23]:
y
x
a - 0 0
a - 1 1

关于python - Pandas: bool /谓词搜索的首选习语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36338868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com