1

给定具有以下结构和值的数据框json_path-

json_path 报告组 实体/分组
data.attributes.total.children.[0] 基督徒家庭 亚伯拉罕家族
data.attributes.total.children.[0].children.[0] 基督徒家庭 在庄园
data.attributes.total.children.[0].children.[0].children.[0].children.[0] 基督徒家庭 现金
data.attributes.total.children.[0].children.[0].children.[1].children.[0] 基督徒家庭 投资级固定收益

我将如何过滤json_path包含children四次的行?即,我想过滤索引位置 2-3 -

json_path 报告组 实体/分组
data.attributes.total.children.[0].children.[0].children.[0].children.[0] 基督徒家庭 现金
data.attributes.total.children.[0].children.[0].children.[1].children.[0] 基督徒家庭 投资级固定收益

我知道如何获得部分匹配,但是方括号中的整数会不一致,所以我的直觉告诉我要以某种方式计算children(即children出现 4x)的实例并将其用作过滤的基础。

关于如何实现这一目标的任何建议或资源?

4

1 回答 1

2

正如您所说,一种天真的方法是计算出现次数.children并将计数与 4 进行比较以创建可用于过滤行的布尔掩码

df[df['json_path'].str.count(r'\.children').eq(4)]

更稳健的方法是检查 4 个孩子的连续出现

df[df['json_path'].str.contains(r'(\.children\.\[\d+\]){4}')]

                                                                   json_path   Reporting Group                Entity/Grouping
2  data.attributes.total.children.[0].children.[0].children.[0].children.[0]  Christian Family                           Cash
3  data.attributes.total.children.[0].children.[0].children.[1].children.[0]  Christian Family  Investment Grade Fixed Income
于 2022-03-05T06:52:27.530 回答