该问题与该问题Python: Pandas filter string data based on its string length非常相似,但是我想使用pandas.DataFrame.query
。假设我们有一个pandas.DataFrame
。我想使用A
pandas.DataFrame.query
的字符串长度不等于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'
答案 0 :(得分:0)
用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
希望这会有所帮助。