python - Pandas 使用 DataFrame.query 根据字符串长度过滤字符串数据

标签 python string pandas dataframe

这个问题与这个问题非常相似Python: Pandas filter string data based on its string length ,但我想使用 pandas.DataFrame.query。假设我们有一个 pandas.DataFrame。我喜欢使用 pandas.DataFrame.query

过滤掉 A 列的字符串长度不等于 3 的行
import pandas as pd
import numpy as np
df = pd.DataFrame({'A' : ['hi', 'hello', 'day', np.nan], 'B' : [1, 2, 3, 4]})  
df.query('A.str.len() != 3')

但是,我得到了以下错误

TypeError: unhashable type: 'numpy.ndarray'

最佳答案

3 替换为 "3" 有效。我正在使用 pandas 0.23.1

df.query('A.str.len() != "3"')

输出:

       A  B
0     hi  1
1  hello  2
3    NaN  4

或者,如果您想将 np.nan 删除为 3 个字符的字符串 (NaN):

df.query('A.astype("str").str.len() != "3"')

输出:

       A  B
0     hi  1
1  hello  2

希望这对您有所帮助。

关于python - Pandas 使用 DataFrame.query 根据字符串长度过滤字符串数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52085349/

相关文章:

python - 使用逻辑( bool )表达式对 Pandas Dataframe 进行切片

python - Numpy/Scipy求解带积分的联立方程

javascript - 使用 Selinium、Scrapy、Python 检索用户个人资料的公共(public) facebook 墙贴

php - 将字符串从 PHP 传递到 JavaScript 函数

python - 将数据框与排序标准合并

python - Pandas Multiindex 从给定级别选择列列表

python - 将表单保存/更新到 EmbeddedDocument

Python读取我的outlook邮箱并解析邮件

C#:如何将文本添加到字符串中的每一行?

Java 字符串输出