在Excel中要删除表格的行和列,直接选择然后执行删除命令即可,如果用VBA代码删除则显得更麻烦一些。在Pandas中,使用df.drop()函数来删除指定的行和列,以及使用df.dropna()函数删除有缺失值的行和列。
df.drop()函数执行删除行,写法为df.drop(序号或标签,axis=0,inplace=True),由于axis的默认值是0,所以在进行删除行操作时,可以不写此参数。inplace参数表示就地删除,也就是在原表删除。该函数支持单行、多行删除。
如果DataFrame表格的行索引是自然序号,则直接在df.drop()函数的第1参数指定行索引序号即可。
1)删除指定的单行
直接在df.drop()函数的第1参数指定行索引序号即可,示例代码如下:
删除单行前后效果对比如图4-36所示。
图4-36 删除单行前后效果对比(1)
2)删除指定的多行
将要删除的行索引序号组织在列表、数组、Series等可迭代对象中,然后放置在df.drop()函数第1参数即可,示例代码如下:
删除多行前后效果对比如图4-37所示。
图4-37 删除多行前后效果对比(1)
如果DataFrame表格的行索引不是自然序号,而是标签,其删除方式也一样,直接在df.drop()函数的第1参数指定索引行的标签即可。
1)删除指定的单行
直接在df.drop()函数的第1参数指定行索引标签即可,示例代码如下:
删除单行前后效果对比如图4-38所示。
图4-38 删除单行前后效果对比(2)
2)删除指定的多行
将要删除的多行索引标签组织在列表、数组、Series等可迭代对象中,然后放置在df.drop()函数第1参数即可,示例代码如下:
删除多行前后效果对比如图4-39所示。
图4-39 删除多行前后效果对比(2)
使用df.drop()函数执行删除列,写法为df.drop(序号或标签,axis=1,inplace=True),因为是删除列,所以axis=1是不能省略的。该函数支持单列、多列删除。
如果DataFrame表格的列索引是自然序号,则直接在df.drop()函数的第1参数指定列索引序号,将axis设置为1即可。
1)删除指定的单列
删除指定的单列,直接在df.drop()函数的第1参数指定列索引序号即可,示例代码如下:
删除单列前后效果对比如图4-40所示。
图4-40 删除单列前后效果对比(1)
2)删除指定的多列
将要删除的多个列索引序号组织在列表、数组、Series等可迭代对象中,然后放置在df.drop()函数第1参数即可,示例代码如下:
删除多列前后效果对比如图4-41所示。
图4-41 删除多列前后效果对比(1)
如果DataFrame表格的列索引不是自然序号,而是标签,其删除方式也一样,直接在df.drop()函数的第1参数指定列索引标签即可。
1)删除指定的单列
直接在df.drop()函数的第1参数指定列索引标签即可,示例代码如下:
删除单列前后效果对比如图4-42所示。
图4-42 删除单列前后效果对比(2)
2)删除指定的多列
将要删除的多个列索引标签组织在列表、数组、Series等可迭代对象中,然后放置在df.drop()函数第1参数即可,示例代码如下:
删除多列前后效果对比如图4-43所示。
图4-43 删除多列前后效果对比(2)
删除DataFrame表格中有缺失值的行和列,应该是行和列删除的一种特殊情况,它并不是使用df.drop()函数,而是使用df.dropna()这个专用函数,该函数的写法为df.dropna(axis=指定删除方向,how=指定删除方式,inplace=True),axis的默认值是0,表示删除有缺失值的行。inplace参数表示就地删除,也就是在原表删除。
如果希望删除DataFrame表格中整行都是缺失值的行,则在df.dropna()函数中指定axis参数为0,how参数为'all'是关键,示例代码如下:
删除行前后效果对比如图4-44所示。
图4-44 删除行前后效果对比(1)
如果希望删除DataFrame表格中整列都是缺失值的列,则在df.dropna()函数中指定axis为1,how参数为'all'是关键,示例代码如下:
删除列前后效果对比如图4-45所示。
图4-45 删除列前后效果对比(1)
如果希望删除DataFrame表格中有缺失值的所在行,则在df.dropna()函数中指定axis为0,how参数为'any'是关键。由于axis的默认值是0,how的默认值是any,所以这两个参数也可以不写,示例代码如下:
删除行前后效果对比如图4-46所示。
图4-46 删除行前后效果对比(2)
如果希望删除DataFrame表格中有缺失值的所在列,则在df.dropna()函数中指定axis为1,how参数为'any'是关键,示例代码如下:
删除列前后效果对比如图4-47所示。
图4-47 删除列前后效果对比(2)