Панда фильтрует строковые данные на основе длины строки, используя DataFrame.query

1

Вопрос очень похож на этот вопрос. 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'
  • 0
    выражение сработало для меня, может быть, есть что-то конкретное для вашего столбца A вашего фрейма данных. пожалуйста поделитесь выводом df.head()
  • 0
    @HaleemurAli Я изменил код, и вы можете использовать образец там.
Теги:
string
pandas
dataframe
pandas-query

1 ответ

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

Надеюсь это поможет.

  • 0
    Это именно то, что я хочу. Благодарю.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню