我需要使用以下操作解析数据。
data=[{'a': 1,
'b': {1: 1,
2: 2},
'c': ['q', 'w', 'e', 'r', 't', 'y']},
{'a': 2,
'b': {1: 2,
2: 3},
'c': ['q', 't', 'a', 'v', 'o', 'l']}]
df = pd.DataFrame(data)
我想获得满足以下条件的数据:
print(df['q' in df.c].head())
然而,我收到错误:
File "pandas/hashtable.pyx", line 676, in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:12216)
KeyError: False
为什么这不起作用?
我感到困惑,因为以下代码的工作方式与解析对象dtype不同:
print(df[df.a == 1].head())
答案 0 :(得分:1)
in
用于索引检查。对于值,您可以使用str.contains()
:
df.c.str.contains("q", regex=False)
答案 1 :(得分:0)
您可以在列上使用apply
生成描述所需列的布尔掩码,然后通过此掩码过滤DataFrame:
>>> df[df.c.apply(lambda val: 'q' in val)]
a b c
0 1 {1: 1, 2: 2} [q, w, e, r, t, y]
1 2 {1: 2, 2: 3} [q, t, a, v, o, l]