这个问题与这个问题非常相似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/