|
目录一、用法精讲441、pandas.DataFrame.mask方法441-1、语法441-2、参数441-3、功能441-4、返回值441-5、说明441-6、用法441-6-1、数据准备441-6-2、代码示例441-6-3、结果输出442、pandas.DataFrame.query方法442-1、语法442-2、参数442-3、功能442-4、返回值442-5、说明442-6、用法442-6-1、数据准备442-6-2、代码示例442-6-3、结果输出443、pandas.DataFrame.__add__魔法方法443-1、语法443-2、参数443-3、功能443-4、返回值443-5、说明443-6、用法443-6-1、数据准备443-6-2、代码示例443-6-3、结果输出444、pandas.DataFrame.add方法444-1、语法444-2、参数444-3、功能444-4、返回值444-5、说明444-6、用法444-6-1、数据准备444-6-2、代码示例444-6-3、结果输出445、pandas.DataFrame.sub方法445-1、语法445-2、参数445-3、功能445-4、返回值445-5、说明445-6、用法445-6-1、数据准备445-6-2、代码示例445-6-3、结果输出二、推荐阅读1、Python筑基之旅2、Python函数之旅3、Python算法之旅4、Python魔法之旅5、博客个人主页一、用法精讲441、pandas.DataFrame.mask方法441-1、语法#441、pandas.DataFrame.mask方法pandas.DataFrame.mask(cond,other=_NoDefault.no_default,*,inplace=False,axis=None,level=None)ReplacevalueswheretheconditionisTrue.Parameters:condboolSeries/DataFrame,array-like,orcallableWherecondisFalse,keeptheoriginalvalue.WhereTrue,replacewithcorrespondingvaluefromother.Ifcondiscallable,itiscomputedontheSeries/DataFrameandshouldreturnbooleanSeries/DataFrameorarray.ThecallablemustnotchangeinputSeries/DataFrame(thoughpandasdoesn’tcheckit).otherscalar,Series/DataFrame,orcallableEntrieswherecondisTruearereplacedwithcorrespondingvaluefromother.Ifotheriscallable,itiscomputedontheSeries/DataFrameandshouldreturnscalarorSeries/DataFrame.ThecallablemustnotchangeinputSeries/DataFrame(thoughpandasdoesn’tcheckit).Ifnotspecified,entrieswillbefilledwiththecorrespondingNULLvalue(np.nanfornumpydtypes,pd.NAforextensiondtypes).inplacebool,defaultFalseWhethertoperformtheoperationinplaceonthedata.axisint,defaultNoneAlignmentaxisifneeded.ForSeriesthisparameterisunusedanddefaultsto0.levelint,defaultNoneAlignmentlevelifneeded.Returns:SametypeascallerorNoneifinplace=True.441-2、参数441-2-1、cond(必须):一个条件,可以是布尔DataFrame、Series或数组,当满足此条件时,将替换值。441-2-2、other(可选):替换的值,可以是标量、DataFrame、Series或数组,默认为_NoDefault.no_default,实际使用时通常会指定某个值。441-2-3、inplace(可选,默认值为False):布尔值,是否直接修改原DataFrame。441-2-4、axis(可选,默认值为None):参数用于选择沿哪个轴应用条件,0或'index'表示沿行,1或'columns'表示沿列。441-2-5、level(可选,默认值为None):多级索引的级别,仅在某些情况下适用。441-3、功能 用于根据给定条件替换值的方法,它与DataFrame.where功能相反:where在满足条件时保持原值,而mask在满足条件时会用其他值替换原值。441-4、返回值 返回一个新的DataFrame,除非inplace=True,此时将直接修改原DataFrame。441-5、说明 无441-6、用法441-6-1、数据准备无441-6-2、代码示例#441、pandas.DataFrame.mask方法#441-1、用标量替换值importpandasaspd#创建一个DataFrame实例df=pd.DataFrame({'A':[1,2,3,4],'B':[10,20,30,40]})#使用mask方法,将大于2的值替换为0masked_df=df.mask(df>2,other=0)print(masked_df,end='\n\n')#441-2、用另一个DataFrame替换值importpandasaspd#创建一个DataFrame实例df=pd.DataFrame({'A':[1,2,3,4],'B':[10,20,30,40]})#创建另一个DataFramereplacement_df=pd.DataFrame({'A':[100,200,300,400],'B':[1000,2000,3000,4000]})#使用mask方法,将大于2的值替换为replacement_df中的对应值masked_df=df.mask(df>2,other=replacement_df)print(masked_df,end='\n\n')#441-3、原地修改DataFrameimportpandasaspd#创建一个DataFrame实例df=pd.DataFrame({'A':[1,2,3,4],'B':[10,20,30,40]})#原地修改DataFrame,将大于2的值替换为-1df.mask(df>2,other=-1,inplace=True)print(df)441-6-3、结果输出#441、pandas.DataFrame.mask方法#441-1、用标量替换值#AB#010#120#200#300#441-2、用另一个DataFrame替换值#AB#011000#122000#23003000#34004000#441-3、原地修改DataFrame#AB#01-1#12-1#2-1-1#3-1-1442、pandas.DataFrame.query方法442-1、语法#442、pandas.DataFrame.query方法pandas.DataFrame.query(expr,*,inplace=False,**kwargs)QuerythecolumnsofaDataFramewithabooleanexpression.Parameters:exprstrThequerystringtoevaluate.Youcanrefertovariablesintheenvironmentbyprefixingthemwithan‘@’characterlike@a+b.YoucanrefertocolumnnamesthatarenotvalidPythonvariablenamesbysurroundingtheminbackticks.Thus,columnnamescontainingspacesorpunctuations(besidesunderscores)orstartingwithdigitsmustbesurroundedbybackticks.(Forexample,acolumnnamed“Area(cm^2)”wouldbereferencedas`Area(cm^2)`).ColumnnameswhicharePythonkeywords(like“list”,“for”,“import”,etc)cannotbeused.Forexample,ifoneofyourcolumnsiscalledaaandyouwanttosumitwithb,yourqueryshouldbe`aa`+b.inplaceboolWhethertomodifytheDataFrameratherthancreatinganewone.**kwargsSeethedocumentationforeval()forcompletedetailsonthekeywordargumentsacceptedbyDataFrame.query().ReturnsataFrameorNoneDataFrameresultingfromtheprovidedqueryexpressionorNoneifinplace=True.442-2、参数442-2-1、expr(必须):一个字符串,表示查询的表达式,表达式中的变量名应与DataFrame中的列名一致,可以使用任何有效的Python表达式语法。442-2-2、inplace(可选,默认值为False):布尔值,如果为True,则在原地修改DataFrame,否则返回一个新的DataFrame。442-2-3、**kwargs(可选):其他关键字参数,包括影响表达式执行环境的参数:level:整数或级别名称,默认为None,查询沿着指定的级别进行计算(仅适用于多等级索引)。global_dict:映射,将被用作全局命名空间中的变量。local_dict:映射,将被用作局部命名空间中的变量。442-3、功能 通过查询表达式来过滤数据,从DataFrame中筛选出符合条件的行,它提供了一种更直观的方法,特别是对于较复杂的条件筛选,与标准的布尔索引方式相比,它显得更加简洁和可读。442-4、返回值 返回一个新的DataFrame,其中包含所有符合查询表达式条件的行,如果inplace=True,则直接修改原DataFrame并返回None。442-5、说明 无442-6、用法442-6-1、数据准备无442-6-2、代码示例#442、pandas.DataFrame.query方法#442-1、基本使用importpandasaspd#创建一个DataFrame实例df=pd.DataFrame({'A':[1,2,3,4],'B':[10,20,30,40],'C':['foo','bar','foo','bar']})#使用query方法筛选出'A'大于2的行filtered_df=df.query('A>2')print(filtered_df,end='\n\n')#442-2、结合多个条件importpandasaspd#创建一个DataFrame实例df=pd.DataFrame({'A':[1,2,3,4],'B':[10,20,30,40],'C':['foo','bar','foo','bar']})#使用query方法筛选出'A'大于2且'C'等于'foo'的行filtered_df=df.query('A>2andC=="foo"')print(filtered_df,end='\n\n')#442-3、使用inplace=Trueimportpandasaspd#创建一个DataFrame实例df=pd.DataFrame({'A':[1,2,3,4],'B':[10,20,30,40],'C':['foo','bar','foo','bar']})#使用query方法原地筛选出'A'大于2的行df.query('A>2',inplace=True)print(df,end='\n\n')#442-4、使用局部和全局命名空间中的变量importpandasaspd#创建一个DataFrame实例df=pd.DataFrame({'A':[1,2,3,4],'B':[10,20,30,40]})#定义一些全局变量low=2high=30#使用query方法,引用全局变量进行筛选filtered_df=df.query('A>@lowandB
|
|