pandas筛选与替换

需求:

在表格中,按照相应的条件,把数据筛选出来,然后把筛选出来的数据进行赋值后,再放回原来的表格。

一、excel表格筛选

要实现这样的功能,在excel2016之前是不容易的,因为筛选时,excel默认的是把不符合条件的数据隐藏掉了,也就是说只是肉眼看不到而已,数据实际还在。所以如果我们把筛选的值复制出来,做出相应的调整以后,是放不回去的。

pandas筛选与替换

可以看出上面的行号是隐藏的,并不是连续的。如果复制出去修改了以后,再粘贴回来是对不上号的。妥协的办法是把符号条件的放一个表,不符合条件的放另一个,最后合并。

二、pandas筛选

先生成一个简单的表格数据:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.arange(20).reshape((5,4)),columns=list("ABCD"))
df

数据如下:

pandas筛选与替换

arange与reshape配合起来,生成一些简单的数据还真是方便。我先把第三行的A列也改成4,等会就筛选A列等于4的数据,符合条件是就会是第2行和第四行数据。

df.iloc[3,0]=4
df

结果如下:

pandas筛选与替换

然后筛选A列数据为4的数据:

df[df["A"]==4]

结果如下:

pandas筛选与替换

三、赋值

如果我们尝试将A列值为4的数据修改为100,就会出现以下问题:

pandas筛选与替换

大意就是说”一个值被试着赋给一个DataFrame的拷贝片断”,推荐用.loc方法替代。关于这个警告的详细解释可以参考以下文章:

pandas的SettingWithCopyWarning警告出现的原因和如何避免_haolexiao的专栏-CSDN博客

上面代码出现错误的原因是 使用了两个[ ](链式)与一个=号(赋值),它们连在一起就构成了 链式赋值。解决办法就是采用loc赋值。

pandas筛选与替换

总结

通过loc[ ]的方式实现精准赋值,这个功能在pandas里面实现还是较为容易的,如果在excel里面,实现起来相对来说有点别扭。在一些稍微苛刻的要求时,就能体现出pandas的强大。

Original: https://blog.csdn.net/qiuqiuit/article/details/120310005
Author: 格物致理,
Title: pandas筛选与替换

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/739039/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球