Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从Python数据帧的文本列中的特定单词创建虚拟变量和分类变量

从Python数据帧的文本列中的特定单词创建虚拟变量和分类变量
EN

Stack Overflow用户
提问于 2019-08-18 16:39:24
回答 1查看 484关注 0票数 0

我正在尝试使用Python从dataframe中的文本列生成虚拟变量和分类变量。想象一下,在名为“Cars_listing”的数据帧中有一个文本列“Cars_notes”:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- "This Audi has ABS braking, leather interior and bucket seats..."
- "The Ford F150 is one tough pickup truck, with 4x4, new suspension and club cab..."
- "Our Nissan Sentra comes with ABS brakes, Bluetooth-enabled radio..."
- "This Toyota Corolla is a gem, with new tires, low miles, a few scratches..."
- "The Renault Le Car has been sitting in the garage, a little rust..."
- "The Kia Sorento for sale has a CD player, new tires..."
- "Red Dodge Viper convertible for sale, ceramic brakes, low miles..."

如何创建新变量:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- car_type: American [Ford] (1), European [Audi, Renault] (2), Asian [Toyota, Kia] (3)
- ABS_brakes: description includes 'ABS brak' (1), or not (0)
- imperfection: description includes 'rust' or 'scratches' (1) or not (0)
- sporty: description includes 'convertible' (1) or not (0) 

我首先尝试了re.search() (而不是re.match()),例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sporty = re.search("convertible",'Cars_notes')

我刚刚开始学习Python文本操作和NLP。我已经在这里搜索了信息以及其他来源(Data Camp,Udemy,Google搜索),但我还没有找到一些东西来解释如何操作文本来创建这样的分类变量或虚拟变量。我们将非常感谢您的帮助。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-18 20:13:12

这是我对此的看法。

因为您正在处理文本,所以pandas.Series.str.contains应该足够了(不需要使用re.search

在根据条件分配新变量时,np.wherenp.select非常有用。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pandas as pd
import numpy as np

Cars_listing = pd.DataFrame({
    'Cars_notes': 
    ['"This Audi has ABS braking, leather interior and bucket seats..."',
    '"The Ford F150 is one tough pickup truck, with 4x4, new suspension and club cab..."',
    '"Our Nissan Sentra comes with ABS brakes, Bluetooth-enabled radio..."',
    '"This Toyota Corolla is a gem, with new tires, low miles, a few scratches..."',
    '"The Renault Le Car has been sitting in the garage, a little rust..."',
    '"The Kia Sorento for sale has a CD player, new tires..."',
    '"Red Dodge Viper convertible for sale, ceramic brakes, low miles..."']
})


# 1. car_type
Cars_listing['car_type'] = np.select(
    condlist=[ # note you could use the case-insensitive search with `case=False`
        Cars_listing['Cars_notes'].str.contains('ford', case=False),
        Cars_listing['Cars_notes'].str.contains('audi|renault', case=False),
        Cars_listing['Cars_notes'].str.contains('Toyota|Kia')
    ],
    choicelist=[1, 2, 3], # dummy variables
    default=0 # you could set it to `np.nan` etc
)

# 2. ABS_brakes
Cars_listing['ABS_brakes'] = np.where(# where(condition, [x, y])
    Cars_listing['Cars_notes'].str.contains('ABS brak'), 1, 0)

# 3. imperfection
Cars_listing['imperfection'] = np.where(
    Cars_listing['Cars_notes'].str.contains('rust|scratches'), 1, 0)

# 4. sporty
Cars_listing['sporty'] = np.where(
    Cars_listing['Cars_notes'].str.contains('convertible'), 1, 0)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    Cars_notes              car_type    ABS_brakes  imperfection    sporty
0   """This Audi has ..."   2           1           0               0
1   """The Ford F150 ..."   1           0           0               0
2   """Our Nissan Sen..."   0           1           0               0
3   """This Toyota Co..."   3           0           1               0
4   """The Renault Le..."   2           0           1               0
5   """The Kia Sorent..."   3           0           0               0
6   """Red Dodge Vipe..."   0           0           0               1
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57546489

复制
相关文章
SQL Server 事务隔离级别
以上说明事务隔离级别主要针对读操作来说的。(DML语句我们可以不考虑事务隔离级别,因为任何事物隔离级别下DML的加锁都很严格,属于得不到就等待的类型)
yaphetsfang
2020/07/30
1.3K0
SQL Server 事务隔离级别
SQL Server中锁与事务隔离级别
SQL Server中可以锁定的资源包括:RID或键(行)、页、对象(如表)、数据库等等。
雪飞鸿
2018/09/05
1.4K0
SQL Server中锁与事务隔离级别
MY-SQL事务隔离级别
首先创建一个表 account。创建表的过程略过(由于 InnoDB 存储引擎支持事务,所以将表的存储引擎设置为 InnoDB)。表的结构如下:
用户4283147
2022/10/08
3510
MY-SQL事务隔离级别
oracle事务隔离级别_mysql查看事务隔离级别
通常事务的隔离级别定义为以下4种(基于3种在并发事务中需要避免的现象来划分的):
全栈程序员站长
2022/11/04
1.8K0
事务隔离级别
  MySQL是一个 客户端/服务器 架构的软件,对于同一个服务器来说,可以有若干个客户端与之连接,每 个客户端与服务器连接上之后,就可以称为一个会话( Session )。每个客户端都可以在自己的会话中 向服务器发出请求语句,一个请求语句可能是某个事务的一部分,也就是对于服务器来说可能同时处理 多个事务。事务有 隔离性 的特性,理论上在某个事务 对某个数据进行访问 时,其他事务应该进行 排 队 ,当该事务提交之后,其他事务才可以继续访问这个数据。但是这样对 性能影响太大 ,我们既想保持 事务的隔离性,又想让服务器在处理访问同一数据的多个事务时 性能尽量高些 ,那就看二者如何权衡取 舍了。
一个风轻云淡
2022/11/15
8040
事务隔离级别
弱隔离级别 & 事务并发问题
如果两个事务操作的是不同的数据, 即不存在数据依赖关系, 则它们可以安全地并行执行。但是当出现某个事务修改数据而另一个事务同时要读取该数据, 或者两个事务同时修改相同数据时, 就会出现并发问题。
真正的飞鱼
2022/09/11
5910
spring事务的默认隔离级别_事务隔离级别有哪些
事务的四个隔离级别想必大家都已经清楚,但是在学习Spring的时候,我们发现Spring自己也有四个隔离级别(加上默认的是五个)。
全栈程序员站长
2022/11/04
1.2K0
spring事务的默认隔离级别_事务隔离级别有哪些
事务隔离级别总结
事务(Transaction)是数据库系统中一系列操作的一个逻辑单元,所有操作要么全部成功要么全部失
张申傲
2020/09/03
6880
mysql事务隔离级别
在典型的应用程序中,多个事务并发运行,经常会操作相同的数据来完成各自的任务(多个用户对同一数据进行操作)。并发虽然是必须的,但可能会导致以下的问题。
CodingCode
2021/09/23
1.4K0
mysql事务隔离级别
事务的隔离级别
MySQL InnoDB 存储引擎的默认支持的隔离级别是 REPEATABLE-READ(可重读)。可以通过 SELECT @@tx_isolation; 命令来查看:
happyJared
2019/08/12
5940
MySQL事务隔离级别
读未提交是一个事务仅修改了数据但还未提交时,本次修改可以便可被其他事务查询到变更后的值。读未提交隔离级别下,其他事务进行查询时,直接返回记录上的最新值,没有视图概念。
关忆北.
2022/11/16
1.4K0
MySQL事务隔离级别
Mysql事务隔离级别
在所有事物中可以看到事物没有提交的结果,实际应用中是很少的,他的性能也不比其他隔离级别好很多,读到未提交的结果导致脏读
小土豆Yuki
2020/08/28
1.5K0
mysql事务隔离级别
1、脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据
Java帮帮
2019/06/15
1.6K0
MySQL事务隔离级别
1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位。
Java技术债务
2022/08/09
1.1K0
Spring事务隔离级别
这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别。
一觉睡到小时候
2020/07/13
4750
MySQL事务隔离级别
索引是MySQL的数据结构,关系着MySQL如何存储数据,查询数据;而如何操作数据,解决多线程时操作数据带来的问题,则需要通过事务来完成。
阿珍
2023/05/17
4250
mysql 事务隔离级别
1. MySQL事务隔离级别, 默认是可重复读(repeatable-read)
北漂的我
2020/12/02
1.1K0
MySQL 事务隔离级别[通俗易懂]
通过如下 SQL 可以查看数据库实例默认的全局隔离级别和当前 session 的隔离级别:
全栈程序员站长
2022/11/04
2.5K0
MySQL事务隔离级别
这四种级别由上至下,隔离强度逐渐增强,性能逐渐变差。它们没有绝对的优劣,采取哪种应该根据系统需求决定。MySQL默认级别为:可重复读。
Libertyyyyy
2022/10/25
1.3K0
事务的四种隔离级别_事务默认的隔离级别
数据库事务的隔离级别有4种,由低到高分别为Read uncommitted 、Read committed 、Repeatable read 、Serializable 。而且,在事务的并发操作中可能会出现脏读,不可重复读,幻读。下面通过事例一一阐述它们的概念与联系。
全栈程序员站长
2022/11/04
8200

相似问题

为什么我得到“这个构造函数与角度依赖注入不兼容”

141

错误:此构造函数与角度依赖注入不兼容。

12

角9“错误:此构造函数与依赖注入不兼容。

43

角常春藤-构造函数与角度依赖注入不兼容

23

此构造函数与角依赖注入不兼容,除非它还可以。

15
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文