javaee论坛

普通会员

225648

帖子

335

回复

349

积分

楼主
发表于 2019-10-31 14:38:05 | 查看: 56 | 回复: 1

删除表中的某一行或者某一列更明智的方法是使用drop,它不改变原有的df中的数据,而是返回另一个dataframe来存放删除后的数据。本文出处主要来源于必备工具书《利用python进行数据分析》。

1.清理无效数据df[df.isnull()]#返回的是个true或false的Series对象(掩码对象),进而筛选出我们需要的特定数据。df[df.notnull()]df.dropna()#将所有含有nan项的row删除df.dropna(axis=1,thresh=3)#将在列的方向上三个为NaN的项删除df.dropna(how='ALL')#将全部项都是nan的row删除

此处:printdata.dropna()和printdata[data.notnull()]结果一样

2.填充无效值df.fillna(0)df.fillna({1:0,2:0.5})#对第一列nan值赋0,第二列赋值0.5df.fillna(method='ffill')#在列方向上以前一个值作为值赋给NaN3.drop函数的具体使用案例

####(1)drop函数的使用:删除行、删除列

printframe.drop(['a'])printframe.drop(['Ohio'],axis=1)

drop函数默认删除行,列需要加axis=1

####(2)drop函数的使用:inplace参数采用drop方法,有下面三种等价的表达式:

1.DF=DF.drop('column_name',axis=1);2.DF.drop('column_name',axis=1,inplace=True)3.DF.drop([DF.columns[[0,1,3]]],axis=1,inplace=True)#Note:zeroindexed

注意:凡是会对原数组作出修改并返回一个新数组的,往往都有一个inplace可选参数。如果手动设定为True(默认为False),那么原数组直接就被替换。也就是说,采用inplace=True之后,原数组名(如2和3情况所示)对应的内存值直接改变;

而采用inplace=False之后,原数组名对应的内存值并不改变,需要将新的结果赋给一个新的数组或者覆盖原数组的内存位置(如1情况所示)。

####(3)drop函数的使用:数据类型转换

df['Name']=df['Name'].astype(np.datetime64)

DataFrame.astype()方法可对整个DataFrame或某一列进行数据格式转换,支持Python和NumPy的数据类型。


上一篇:js抽奖 下一篇:百度地图 创建应用

普通会员

0

帖子

258

回复

260

积分
沙发
发表于 2023-09-02 11:07:10

标记一下

您需要登录后才可以回帖 登录 | 立即注册

触屏版| 电脑版

技术支持 历史网 V2.0 © 2016-2017