Pandas中批量替换字符的六种方法总结

目录
  • 一、前言
  • 二、解决过程
    • 方法一
    • 方法二
    • 方法三
    • 方法四
    • 方法五
    • 方法六
  • 三、总结

一、前言

前几天在Python最强王者群有个叫【dcpeng】的粉丝问了一个关于Pandas中的问题,这里拿出来给大家分享下,一起学习。

想问一下我有一列编码为1,2,3,4的数据,如何将1批量换为“开心”,2批量换为“悲伤”这种字符替换呢?

二、解决过程

思路挺简单,限定Pandas处理,想到的方法有很多,这里拿出来给大家分享,希望对大家的学习有帮助。

下面这个是生成源数据的代码:

df = pd.DataFrame({'col1': [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]})
df

方法一

代码如下所示:

df['col2'] = df['col1'].map({1:"开心", 2:"悲伤", 3:"难过", 4:"泪目"})
df

运行结果如下图所示:

方法二

这个方法是参考才哥的文章写出来的,代码如下所示:

def getValue(s):
    if s==1:
        return '开心'
    elif s==2:
        return '悲伤'
    elif s==3:
        return '难过'
    elif s==4:
        return '泪目'
df['col3'] = df['col1'].apply(getValue)
df

运行结果如下图所示:

方法三

【冫马讠成】大佬给了一个思路,使用replace实现。

代码如下所示:

df['col4'] = df['col1'].replace(1, '开心').replace(2, '悲伤').replace(3, '难过').replace(4, '泪目')
df

得到的结果如下所示:

方法四

这个方法是基于apply()函数,代码如下所示:

def get_value(s):
    dict = {1:"开心", 2:"悲伤", 3:"难过", 4:"泪目"}
    return dict[s]
df['col5'] = df['col1'].apply(get_value)
df

运行结果如下图所示:

方法五

【沈复】大佬给了一个思路和代码,如下图所示:

这个方法是基于map()函数,代码如下所示:

def get_value(s):
    dict = {1:"开心", 2:"悲伤", 3:"难过", 4:"泪目"}
    return dict[s]
df['col5'] = df['col1'].map(get_value)
df

运行结果如下图所示:

方法六

这里【月神】仍然是使用replace方法进行实现的,但是代码秀了很多。

代码如下所示:

df['col7'] = df['col1'].replace([1, 2, 3, 4], ['开心', '悲伤', '难过', '泪目'])
df

【月神】提醒:这个是全匹配,不要加regex=True参数,不然你会后悔的!

运行结果如下图所示:

三、总结

这篇文章基于粉丝提问,针对有一列编码为1,2,3,4的数据,如何将1批量换为“开心”,2批量换为“悲伤”这种字符替换的问题,盘点了6个Pandas中批量替换字符的方法,给出了具体说明和演示,顺利地帮助粉丝解决了问题!

以上就是Pandas中批量替换字符的六种方法总结的详细内容,更多关于Pandas替换字符的资料请关注我们其它相关文章!

(0)

相关推荐

  • Python字符串替换实例分析

    本文实例讲述了Python字符串替换的方法.分享给大家供大家参考.具体如下: 单个字符替换 s = 'abcd' a = ["a", "b", "c"] b = ["c", "d", "e"] import string s.translate(string.maketrans(''.join(a),''.join(b))) print s 输出结果为:abcd 字符串替换,改善版 s

  • python字符串替换示例

    php5.2升级到5.3后,原& new的写法已经被放弃了,可以直接new了,面对上百个php文件,手动修改简直是想要命,所以写了个脚本,分分钟搞定. 复制代码 代码如下: #-*- coding:utf-8 -*- #!/usr/bin/python import os #定义程序根目录rootpath='D:\\wamp\\www\\erp\\app' def m_replace(path): for item in os.listdir(path):  nowpath=os.path.jo

  • python字符串替换re.sub()方法解析

    pattern可以是一个字符串也可以是一个正则,用于匹配要替换的字符,如果不写,字符串不做修改.\1 代表第一个分组 repl是将会被替换的值,repl可以是字符串也可以是一个方法.如果是一个字符串,反斜杠会被处理为逃逸字符,如\n会被替换为换行,等等.repl如果是一个function,每一个被匹配到的字段串执行替换函数. \g<1> 代表前面pattern里面第一个分组,可以简写为\1,\g<0>代表前面pattern匹配到的所有字符串. count是pattern被替换的最大

  • python中快速进行多个字符替换的方法小结

    先给出结论: 要替换的字符数量不多时,可以直接链式replace()方法进行替换,效率非常高: 如果要替换的字符数量较多,则推荐在 for 循环中调用 replace() 进行替换. 可行的方法: 1. 链式replace() string.replace().replace() 1.x 在for循环中调用replace() 「在要替换的字符较多时」 2. 使用string.maketrans 3. 先 re.compile 然后 re.sub -- def a(text): chars = "

  • python字符串替换re.sub()实例解析

    这篇文章主要介绍了python字符串替换re.sub()实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 re.sub(pattern, repl, string, count=0, flags=0) pattern可以是一个字符串也可以是一个正则,用于匹配要替换的字符,如果不写,字符串不做修改.\1 代表第一个分组 repl是将会被替换的值,repl可以是字符串也可以是一个方法.如果是一个字符串,反斜杠会被处理为逃逸字符,如\n会被替换

  • python字符串替换的2种方法

    python 字符串替换 是python 操作字符串的时候经常会碰到的问题,这里简单介绍下字符串替换方法. python 字符串替换可以用2种方法实现: 1是用字符串本身的方法. 2用正则来替换字符串 下面用个例子来实验下: a = 'hello word' 把a字符串里的word替换为python 1.用字符串本身的replace方法 复制代码 代码如下: a.replace('word','python') 输出的结果是hello python 2.用正则表达式来完成替换: 复制代码 代码如

  • Pandas中批量替换字符的六种方法总结

    目录 一.前言 二.解决过程 方法一 方法二 方法三 方法四 方法五 方法六 三.总结 一.前言 前几天在Python最强王者群有个叫[dcpeng]的粉丝问了一个关于Pandas中的问题,这里拿出来给大家分享下,一起学习. 想问一下我有一列编码为1,2,3,4的数据,如何将1批量换为“开心”,2批量换为“悲伤”这种字符替换呢? 二.解决过程 思路挺简单,限定Pandas处理,想到的方法有很多,这里拿出来给大家分享,希望对大家的学习有帮助. 下面这个是生成源数据的代码: df = pd.Data

  • Access中批量替换数据库内容的两种方法

    今天遇到一个问题,一Access数据库中存放着N条文章记录,现在想替换掉这些文章中的部分内容,我们首先想到的是到网站后台去一条一条修改文章,那如果有1000篇文章,那就在网站后台改1000次,难以想象这是什么样的工作量.其实在Access数据库中可以利用SQL语句来批量替换内容,只需一句话就能解决问题,下面通过两种方法来解决此问题. 方法一:通过Access数据库中的查询分析器来修改(这里我使用的是Access 2003) 1.打开需要修改的Access数据库 2.在数据库"对象"中点

  • Node.js读写文件之批量替换图片的实现方法

    问题:文件夹A中有大量图片文件,需要用另外一个图片替换掉A中图片,但是命名保持不变. 手工的做法如下: 1)浏览器打开图片->2)另存为->3)目标文件夹->4)找到一个图片->5)替换->6)确定 然后,重复步骤2)和之后的步骤.不小心会漏掉或重复. 这么麻烦,使用node.js来处理改如何呢?代码如下: var fs=require('fs'), cp=require('child_process'); var url='Moriarty.jpg' var rs=fs.r

  • Discuz批量替换帖子内容的方法(使用SQL更新数据库)

    今天一个朋友的Discuz X2论坛需要批量替换帖子的内容,帖子数量上万,一开始是通过设置词语过滤,发现无效果,只能通过数据库批量替换了,具体方法请接着往下看. Discuz X2论坛后台提供数据库SQL语句操作的功能,但是默认情况下出于安全考虑,该功能是被关闭的,所以得先修改下配置文件,方法如下: 找到论坛程序文件config/config_global.php,用记事本打开该文件,然后查找$_config['security']['querysafe']['status']将其设置为0,继续

  • 在Pandas中给多层索引降级的方法

    # 背景介绍 通常我们不会在Pandas中主动设置多层索引,但是如果一个字段做多个不同的聚合运算, 比如sum, max这样形成的Column Level是有层次的,这样阅读非常方便,但是对编程定位比较麻烦. # 数据准备 import pandas as pd import numpy as np df = pd.DataFrame(np.arange(0, 14).reshape(7,2),columns =['a','b'] ) df.a = df.a %3 df['who'] = 'Bo

  • pandas中去除指定字符的实例

    例表: 假如想要去掉表中的'#',':'而且以'#'和':'为分割线切割数据: #将dfxA_2的每一个分隔符之间的数据提出来 col1=dfxA_2['travel_seq'].str.split('#').str[0] col2=dfxA_2['travel_seq'].str.split('#').str[1] col3=dfxA_2['travel_seq'].str.split('#').str[2].str.split(';').str[0] 这里只是部分代码,实际情况按需求可以灵活

  • python 巧用正则寻找字符串中的特定字符的位置方法

    假定字符串为: 小明买冰棍花了5元,买糖果花了3元,买游戏花了59元,小明今天一共花了67元. 要找到字符串中所有"元"所在的位置,只需几行代码即可搞定. import re str=u'小明买冰棍花了5元,买糖果花了3元,买游戏花了59元,小明今天一共花了67元.' word = u'元' a = [m.start() for m in re.finditer(word, str)] print a 结果为 [8, 16, 25, 37],说明"元"出现的位置在第

  • Mysql中批量替换某个字段的部分数据(推荐)

    MYSQL中批量替换某个字段的部分数据,具体介绍如下所示: 1.修改字段里的所有含有指定字符串的文字 UPDATE 表A SET 字段B = replace(字段B, 'aaa', 'bbb') example: update table set url= replace(url, 'aaa', 'bbb') [将url字段中的aaa批量更改为bbb] update table set url= REPLACE (url,'3','1.png') where 条件; 2.常规条件修改: upda

  • Pandas中DataFrame交换列顺序的方法实现

    一.获取DataFrame列标签 import pandas as pd file_path = '/Users/Arithmetic/da-rnn-master/data/collectd67_power_after_test_smooth.csv' dataset = pd.read_csv(file_path) cols = list(dataset) ['ps_state-stopped', 'ps_state-running', 'ps_state-blocked', 'ps_stat

  • 详解Java中异步转同步的六种方法

    目录 一.问题 应用场景 二.分析 三.实现方法 1.轮询与休眠重试机制 2.wait/notify 3.Lock Condition 4.CountDownLatch 5.CyclicBarrier 6.LockSupport 一.问题 应用场景 应用中通过框架发送异步命令时,不能立刻返回命令的执行结果,而是异步返回命令的执行结果. 那么,问题来了,针对应用中这种异步调用,能不能像同步调用一样立刻获取到命令的执行结果,如何实现异步转同步? 二.分析 首先,解释下同步和异步 同步,就是发出一个调

随机推荐