首页 > 解决方案 > Pandas 使用 DataFrame.query 根据字符串长度过滤字符串数据

问题描述

这个问题非常类似于这个问题Python: Pandas filter string data based on its string length,但我想使用pandas.DataFrame.query. 假设我们有一个pandas.DataFrame. 我喜欢使用过滤掉列的字符串长度A不等于 3的行pandas.DataFrame.query

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'

标签: pythonstringpandasdataframe

解决方案


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

希望这可以帮助。


推荐阅读