Pra*_*p M 22 python dataframe pandas
我已经使用Pandas超过3个月了,我对数据帧的访问和查询等有了一个很好的想法.
我有一个要求,其中我想在pandas.query()中使用LIKE关键字(类似于SQL的LIKE)查询数据帧.
即:我试图执行pandas.query("column_name LIKE'abc%'")命令,但它失败了.
我知道另一种方法是使用str.contains("abc%"),但这不符合我们的要求.
我们想在pandas.query()中执行LIKE.我怎么能这样做?
vol*_*myr 21
如果必须使用df.query(),则正确的语法是:
pandas.query('column_name.str.contains("abc")')
Run Code Online (Sandbox Code Playgroud)
您可以轻松地将其与其他条件相结合:
pandas.query('column_a.str.contains("abc") or column_b.str.contains("xyz") and column_c>100')
Run Code Online (Sandbox Code Playgroud)
然而,它并不完全等同于SQL Like,但仍然有用.
不使用query(),但这将为您提供所需的内容:
df[df.col_name.str.startswith('abc')]
df
Out[93]:
col_name
0 this
1 that
2 abcd
df[df.col_name.str.startswith('abc')]
Out[94]:
col_name
2 abcd
Run Code Online (Sandbox Code Playgroud)
查询使用熊猫eval(),并且在其中可以使用的内容受到限制。如果要使用纯SQL,可以考虑使用pandasql,以下语句将对您有效:
sqldf("select col_name from df where col_name like 'abc%';", locals())
Run Code Online (Sandbox Code Playgroud)
或者,如果您对pandas str方法的问题是您的列不完全是字符串类型,则可以执行以下操作:
df[df.col_name.str.startswith('abc').fillna(False)]
Run Code Online (Sandbox Code Playgroud)
小智 5
这个帖子的时间已经很晚了,但对于任何碰到它的人来说.您可以通过基于字符串方法检查制作搜索条件来使用布尔索引str.contains.
例:
dataframe[dataframe.summary.str.contains('Windows Failed Login', case=False)]
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,括号内的代码段引用数据框的摘要列,并使用该.str.contains方法'Windows Failed Login'在该系列的每个值中进行搜索.区分大小写可以设置为true或false.这将返回布尔索引,然后用于返回您要查找的数据帧..fillna()如果遇到任何Nan错误,也可以在括号中使用它.
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
22707 次 |
| 最近记录: |