熊猫使用DataFrame.query根据其字符串长度过滤字符串数据

时间:2018-08-29 20:07:13

标签: python string pandas dataframe pandas-query

该问题与该问题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'

1 个答案:

答案 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

希望这会有所帮助。