首页 > 其他分享 >盘点一个Pandas中.str的一个常见小误区

盘点一个Pandas中.str的一个常见小误区

时间:2024-01-25 22:00:41浏览次数:32  
标签:25 df 替换 replace 盘点 str Pandas

大家好,我是皮皮。

一、前言

前几天在Python白银交流群【上海新年人】问了一个Pandas基础的问题。问题如下:大佬们,这里面的dtype,能直接改成str格式?我一开始认为只能这么看print(df.dtypes),传统的做法我一直认为是这样子df['数学'] = df['数学'].astype(str),不明白,上面这部,跟这部df['数学'].str.replace()是不是要同时做。

image.png

印象中这部df['数学'].str我一直认为是直接转字符串格式str了,上面df['数学'] = df['数学'].astype(str)是多余的了?还有一个疑问,是草莓大哥,在里面做了一个replace(regex={:}),但我记得用正则的时候应该是replace(****,regex=True),是不是草莓大哥做这题时又超纲了?

二、实现过程

这里【瑜亮老师】给了一个详细解答:这里的replace可以传一个字典,把所有的key替换成对应的value。

image.png

粉丝继续提问:还有我一直不太明白df[*].str.replace与直接写replace()有啥区别?这一步df[*].str是不是把某列转成str格式???。

后来【论草莓如何成为冻干莓】给了一个思路如下:.str是调用Series的str方法,直接用replace是用DataFrame的replace方法。

【瑜亮老师】给了一个思路如下:df.replace还能传2个列表,用列表1的元素替换列表2中的元素,也是11对应的。上面是多对多替换。还可以传1个列表,1个元素。这种是多对一替换。你只学了个一对一替换。

image.png

object是混合类型,里面的内容可能是数字,你是数字的25,又不是字符串的'25',因为原df中的25是int,你替换的是字符串25,根本找不到这个,所以不替换。如果你不把int转换为str数据类型,那么无论你用df[].str.replace('25', '不及格'),还是df[].str.replace(25, '不及格')都是不行的,.str.replace 是字符串的方法,并不是把df[]中的数据变成str。

image.png

df[]中存的是str,这时候你用.str.replace可以实现替换效果,如果里面不是str你调用字符串的replace,怎么替换?这也是为什么有是会在这之前加个.astype(str)。

image.png

顺利地解决了粉丝的问题。

如果你也有类似这种数据分析的小问题,欢迎随时来交流群学习交流哦,有问必答!

三、总结

大家好,我是皮皮。这篇文章主要盘点了一个Pandas数据筛选的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。

最后感谢粉丝【上海新年人】提出的问题,感谢【论草莓如何成为冻干莓】、【瑜亮老师】给出的思路,感谢【莫生气】、【冯诚】等人参与学习交流。

【提问补充】温馨提示,大家在群里提问的时候。可以注意下面几点:如果涉及到大文件数据,可以数据脱敏后,发点demo数据来(小文件的意思),然后贴点代码(可以复制的那种),记得发报错截图(截全)。代码不多的话,直接发代码文字即可,代码超过50行这样的话,发个.py文件就行。

image.png

标签:25,df,替换,replace,盘点,str,Pandas
From: https://www.cnblogs.com/dcpeng/p/17988285

相关文章

  • CF1732F Clear the String
    题目传送门很明显的一道区间dp我们设\(dp_{i,j}\)表示清空\(i\)到\(j\)之间所有字母所需的最小操作次数紧接着任取一个\(k\)满足\(k\in(i,j]\)来分情况讨论:\[f_{i,j}=\min^j_{k=i+1}\left\{\begin{aligned}a_i=a_k\Rightarrowf_{i+1,k-1}+f_{k,j}\\f_{i+1,k-1}+f......
  • dijkstra算法(单源最短路径)
    单源最短路径是求解给定一个起点到其他所有的点的最短距离。适用的范围:有向图、边的权值没有负数洛谷测试链接代码实现#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>#include<time.h>#include<stdboo......
  • 收集Stream流的数据到集合或数组中
    1publicstaticvoidmain(String[]args){2List<String>list=newArrayList<>();3list.add("张三");4list.add("李四");5list.add("王武");6list.add("王武"......
  • Stream流操作示例
    1privatestaticdoubleoneMoney;2privatestaticdoubletwoMoney;3privatestaticdoublesumMoney;45publicstaticvoidmain(String[]args){6List<Employee>list1=newArrayList<>();7list1.add(new......
  • Comparison between IPQ9574 and IPQ9554 | MLO EHT Solution Unveils the WiFi 7 CPU
    ComparisonbetweenIPQ9574andIPQ9554|MLOEHTWiFi7QualcommSolutionUnveilstheWiFi7CPUforIndustrialApplications-AlderSeriesWi-Fi7elevateswirelessexperiencesandwillaccelerateemergingusecaseswithitsextremedataspeedsandconsis......
  • pandas_Series
    **Series结构是由索引+值组成的。**Series.values#得到值Series.index#得到索引创建一个Series,并赋予其标签索引:s1=pd.Series([2,3,4,5,6],index=[0,1,2,3,4])通过字典方式创建Series:s2=pd.Series({"小猫":66,"小狗":77,"小牛":88})返回值会告诉dtype类型,如果想......
  • pandas_DataFrame
    DataFrame的结构为二维。创建方法类似字典,由列名:Series组成。创建DataFrame示例1:importpandasaspds_id=pd.Series(["01","02","03","04","05"])s_class=pd.Series(["二班","一班","二班","三班&quo......
  • Stream流
    1publicstaticvoidmain(String[]args){2//Collection集合获取流3Collection<String>collection=newArrayList<>();4Stream<String>stream=collection.stream();56//Map集合获取流7M......
  • 深入解析C++中sizeof和strlen的奥秘:区别、应用与技巧全揭秘!
     sizeof 和 strlen 是C++中用于处理字符串的两个不同的操作符,它们的作用和使用场景有很大的区别。sizeof操作符:区别:sizeof 是一个运算符,不是一个函数,用于获取一个类型或变量的字节大小。对于数组,sizeof 返回整个数组的字节大小。对于指针,sizeof 返回指针本身的......
  • Docker启动Nacos报错:Nacos Server did not start because dumpservice bean construct
    一、表象重启服务器之后Docker运行Nacos容器,启动成功,但是外网无法访问。查看了一下Nacos启动日志(dockerlogsnacos容器名)二、分析很明显是数据库配``置问题。。如果是数据库配置的问题,可以着重检查以下信息尤其是MySQL内网Host,查询方式见Docker安装Nacos三、解决我已......