首页 > 解决方案 > Pandas 按字典列表中的值过滤数据帧

问题描述

我的数据框(mydata)中有以下结构

name                values
abc                 [{"x":"pqr","y":"lrz"}, {"x":"wer", "y":"rty"}]
bcd                 [{"x":"pqs","y":"eer"}, {"x":"pqr", "y":"dww"}]

它有两列。values 列有一个字典列表。我想过滤值列表的第一个元素具有“x”=“pqr”值的数据框。

预期的数据框

name                values
abc                 [{"x":"pqr","y":"lrz"}, {"x":"wer", "y":"rty"}]

我试过了

mydata[mydata["values"][0]["x"] == "pqr"]

但我得到了keyerror 0。有没有办法在不遍历数据框的情况下做到这一点。?

标签: pythonpandas

解决方案


使用pandas.Series.str

df[df['values'].str[0].str['x'].eq("pqr")]

输出:

  name                                             values
0  abc  [{'x': 'pqr', 'y': 'lrz'}, {'x': 'wer', 'y': '...

推荐阅读