python - 在熊猫中如何搜索单词和短语来创建新的数据框?
问题描述
在 Python3 和 pandas 我有这个数据框:
bens_gerais_candidatos_2014.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 6400 entries, 0 to 6399
Data columns (total 12 columns):
uf_x 6400 non-null object
cargo 6400 non-null object
nome_completo 6400 non-null object
sequencial 6400 non-null object
cpf 6400 non-null object
nome_urna 6400 non-null object
partido_eleicao 6400 non-null object
situacao 6400 non-null object
uf_y 6400 non-null object
descricao 6400 non-null object
detalhe 6400 non-null object
valor 6400 non-null float64
dtypes: float64(1), object(11)
memory usage: 650.0+ KB
我需要选择“detalhe”列中包含单词或短语的行:“LOTE RURAL”或“FAZENDA”或“IMOVEL RURAL”或“GLEBA”或“AREA RURAL”或“AREA NO LOTEAMENTO”
最初我考虑选择每个部分:
mask = bens_gerais_candidatos_2014['detalhe'].str.contains("LOTE RURAL", na=False)
parte1 = bens_gerais_candidatos_2014[mask]
mask = bens_gerais_candidatos_2014['detalhe'].str.contains("FAZENDA", na=False)
parte2 = bens_gerais_candidatos_2014[mask]
等等。然后将这些行与一些合并合并:
areas1 = pd.merge(parte1, parte2, left_on='cpf', right_on='cpf', how='outer')
areas2 = pd.merge(areas1, parte3, left_on='cpf', right_on='cpf', how='outer')
...
请问,是否有另一种更简单的方法来查找单词和短语以创建新的数据框?
不重复行 - 例如,有“LOTE RURAL”出现在单行中的情况,以及“LOTE RURAL”与“FAZENDA”一起出现的情况,或者仅出现“FAZENDA”的情况。像这样:
"LOTE RURAL 42"
"LOTE RURAL 38, DENOMINADO FAZENDA CATARINA"
"FAZENDA ÁGUA VERMELHA"
解决方案
我认为你可以这样做:
str_choice = "LOTE RURAL|FAZENDA|IMOVEL RURAL"
bens_gerais_candidatos_2014[bens_gerais_candidatos_2014['detalhe'].\
str.contains(str_choice, na=False)]
该符号|
表示“或”,str_choice
因此它可以获取您要查找的所有不同单词,添加|
您需要的所有单词
推荐阅读
- c++ - 如何可靠地获取文件夹的视图状态属性包
- listview - Flutter SliverAppBar 和 SliverList 有不同的滚动条
- php - 如何避免使用 Xdebug 进入供应商/框架代码?
- javascript - 如何解决 PHP 错误:注意:尝试访问 bool 类型值的数组偏移量
- amazon-web-services - 如何在 AWS 上的 rails 网站上运行我的 ruby?
- java - Eclipse 中的 OpenCV 4.3.0 java.lang.UnsatisfiedLinkError
- javascript - 是否可以将设备 ID 记录为 Firebase 中的唯一用户 ID?
- c++ - 无法使用 vcpkg 在 Windowsx64 Visual Studio Code 中下载 C++ 库
- python - 返回 False 三次而不是一次
- php - 60 秒后上传文件时出现错误请求 400