需求:
在表格中,按照相应的条件,把数据筛选出来,然后把筛选出来的数据进行赋值后,再放回原来的表格。
一、excel表格筛选
要实现这样的功能,在excel2016之前是不容易的,因为筛选时,excel默认的是把不符合条件的数据隐藏掉了,也就是说只是肉眼看不到而已,数据实际还在。所以如果我们把筛选的值复制出来,做出相应的调整以后,是放不回去的。
可以看出上面的行号是隐藏的,并不是连续的。如果复制出去修改了以后,再粘贴回来是对不上号的。妥协的办法是把符号条件的放一个表,不符合条件的放另一个,最后合并。
二、pandas筛选
先生成一个简单的表格数据:
import pandas as pd
import numpy as np
df = pd.DataFrame(np.arange(20).reshape((5,4)),columns=list("ABCD"))
df
数据如下:
arange与reshape配合起来,生成一些简单的数据还真是方便。我先把第三行的A列也改成4,等会就筛选A列等于4的数据,符合条件是就会是第2行和第四行数据。
df.iloc[3,0]=4
df
结果如下:
然后筛选A列数据为4的数据:
df[df["A"]==4]
结果如下:
三、赋值
如果我们尝试将A列值为4的数据修改为100,就会出现以下问题:
大意就是说”一个值被试着赋给一个DataFrame的拷贝片断”,推荐用.loc方法替代。关于这个警告的详细解释可以参考以下文章:
pandas的SettingWithCopyWarning警告出现的原因和如何避免_haolexiao的专栏-CSDN博客
上面代码出现错误的原因是 使用了两个[ ](链式)与一个=号(赋值),它们连在一起就构成了 链式赋值。解决办法就是采用loc赋值。
总结
通过loc[ ]的方式实现精准赋值,这个功能在pandas里面实现还是较为容易的,如果在excel里面,实现起来相对来说有点别扭。在一些稍微苛刻的要求时,就能体现出pandas的强大。
Original: https://blog.csdn.net/qiuqiuit/article/details/120310005
Author: 格物致理,
Title: pandas筛选与替换
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/739039/
转载文章受原作者版权保护。转载请注明原作者出处!