Вопрос очень похож на этот вопрос. Python: данные строки фильтра Pandas основаны на его длине строки, но я хочу использовать 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'
Замена 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
Надеюсь это поможет.
df.head()