Python Pandas使用DataFrame.query根据字符串长度筛选字符串数据
这个问题与这个问题非常相似,但我想使用Python Pandas使用DataFrame.query根据字符串长度筛选字符串数据,python,string,pandas,dataframe,Python,String,Pandas,Dataframe,这个问题与这个问题非常相似,但我想使用pandas.DataFrame.query。假设我们有一个pandas.DataFrame。我喜欢使用pandas.DataFrame.query筛选出列A的字符串长度不等于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(
pandas.DataFrame.query
。假设我们有一个pandas.DataFrame
。我喜欢使用pandas.DataFrame.query
筛选出列A
的字符串长度不等于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'
将
3
替换为“3”
有效。我正在使用pandas 0.23.1
df.query('A.str.len() != "3"')
输出:
A B
0 hi 1
1 hello 2
3 NaN 4
A B
0 hi 1
1 hello 2
或者,如果要将
np.nan
作为3个字符串(nan
)删除:
输出:
A B
0 hi 1
1 hello 2
3 NaN 4
A B
0 hi 1
1 hello 2
希望这能有所帮助。这个表达式对我有用,也许数据框的A列有一些特定的内容。请分享
df.head()
@haleemulari的输出,我已经修改了代码,您可以在那里使用示例。这正是我想要的。谢谢