在以下示例中,最终数据框架返回空 - 我缺少什么?
df = pd.DataFrame({
'foo':['010','020','030','040','050','060','070','080','090',None],
'bar':['aaa','bbb','ccc','ddd','eee','fff','ggg','hhh','iii','jjj']
})
df1 = df[df.foo.str.startswith('01',na=False)]
df2 = df[df.foo.str.startswith(('01','03'),na=False)]
df3 = df.query("foo.str.startswith('01',na=False)")
df4 = df.query("foo.str.startswith(('01','03'),na=False)")
以前使用tuple的元组解决此问题。
@
输出:t = ('01', '03')
df.query("foo.str.startswith(@t, na=False)")
从
foo bar
0 010 aaa
2 030 ccc
参数
Exprstr
query
the Regex模式中的 ^字符指定在字符串开始时匹配(模仿startswith())。
似乎确实是,元组转换为列表的某个地方,然后series.str.startswith返回一个错误,因为它期望一个元组或字符串。 其他解决方案可能是使用以下代码使用str。The query string to evaluate. You can refer to variables in the environment by prefixing them with an ‘@’ character like @a + b.