【问题标题】:Pandas filter string data based on its string length using DataFrame.queryPandas 使用 DataFrame.query 根据字符串长度过滤字符串数据
【发布时间】:2019-02-04 17:01:28
【问题描述】:

这个问题和Python: Pandas filter string data based on its string length这个问题很相似,但是我想用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'

【问题讨论】:

  • 这个表达式对我有用,也许你的数据框的 A 列有一些特定的东西。请分享df.head()的输出
  • @HaleemurAli 我已经修改了代码,你可以在那里使用示例。

标签: python string pandas dataframe


【解决方案1】:

"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

希望这会有所帮助。

【讨论】:

  • 这正是我想要的。谢谢。
猜你喜欢
  • 2013-11-25
  • 1970-01-01
  • 2012-12-06
  • 2012-01-19
  • 2022-01-03
  • 1970-01-01
  • 2012-11-23
  • 2017-12-23
相关资源
最近更新 更多