熊猫通过字典列表中的值过滤数据框

时间:2020-01-20 10:56:49

标签: python pandas

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

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

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

预期数据框

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

我尝试了

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

但是我得到了keyerror0。有什么方法可以做到这一点而无需遍历数据帧。 ?

2 个答案:

答案 0 :(得分:5)

使用pandas.Series.str

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

输出:

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

答案 1 :(得分:1)

您还可以使用申请:

df[df['values'].apply(lambda x: x[0]['x']=='pqr')]


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