我的数据框(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。有什么方法可以做到这一点而无需遍历数据帧。 ?
答案 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': '...