存储多对多关系以便将来快速查询的最佳方法

2024-09-29 02:22:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据框,我在一个字段上执行多个regex子字符串搜索,以确定这个字符串属于哪个“家族”。这是一个相当昂贵的搜索,所以我想把搜索结果保存在Pandas列中,以便更快地检索。Pandas有一个很好的isin()方法来确定单个检索到的项是否在给定的查询集中,但我不确定如何进行反向操作。在

下面是一个简单的1行示例:

>>> from pandas import DataFrame
>>> example = DataFrame({"text": "the quick brown fox jumps over the lazy dog", "families": [["famA", "famB", "famE"]]})
>>> example
             families                                         text
0  [famA, famB, famE]  the quick brown fox jumps over the lazy dog

[1 rows x 2 columns]

我希望能够查询包含特定家族关系(例如“famA”)的所有行的数据帧。最有效的方法是什么?在


Tags: the数据方法字符串textdataframepandasexample
1条回答
网友
1楼 · 发布于 2024-09-29 02:22:42

从这个例子中很难判断,但是是否可以存储家庭关系而不是单独的列?例如,可以为每个包含布尔值的族设置列。比如:

In [54]: df

Out[54]:
    FamA    FamB    FamC    FamD    FamE    text
0   True    True    False   False   True    the quick brown fox jumps over the lazy dog

用这种方式填充框架似乎很容易,检查某个特定行是否在某个特定的族中就很简单了。在数据帧单元中存储列表似乎不是一个好主意。如果您展示了一个如何从字符串生成族列表的示例,那么我可以用这种方式帮助填充。另一个更接近实际情况的建议是将族存储在单个字符串中,而不是一个列表,类似于

^{pr2}$

那你就可以了

In [63]:
example.families.str.contains("famA")

Out[63]:
0    True
Name: families, dtype: bool

相关问题 更多 >