我已经创建了以下这样一个数据框:
d = {"one":[1,2,3],"two":[[["c",3],["a",4]],["b",5],["a",6]]}
pd.DataFrame(d)
我的问题是:如何筛选出列"two"只包含"a"的新数据框。
期望结果如下图所示:https://istack.dev59.com/CLtWc.webp
df.loc[df["two"].astype(str).str.contains("a")]
apply
方法,但是apply
很耗费资源。 - arnold您可以使用apply
方法返回一个布尔掩码,该掩码可用于选择正确的索引。其思想是定义一个要对Series
的每个元素执行操作的函数,并将其(使用apply
)应用于整个系列。
def fun(element):
print(element)
if type(element[0])==list:
l=[e[0]=='a' for e in element]
else:
l = [element[0]=='a']
if True in l:
return True
else:
return False
df[df.two.apply(fun)]