python - 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'
解决方案
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
希望这可以帮助。
推荐阅读
- regex - 使用正则表达式获取所有 HTML 标记之间的所有数字
- excel - Issue with VB macros in Excel not selecting the correct cells
- c# - 使用 newsoft.json 进行序列化和反序列化
- powershell - PowerShell Get-ChildItem with variable and string
- windows - 将新行添加到文本文件时运行 Windows 命令?
- r - 从一列名称中创建一列首字母作为R中的字符串
- c - 如何将两个位图与 80-20% 的 AVX2 混合?
- javascript - 为什么 GPU 渲染时间不一致?
- javascript - Angular 7 CRUD App Service 未连接到 REST Api
- apache-flink - Apache Flink Windows 的无限允许延迟