翻译 python:入门 - 数据预处理 - pandas行列的删除和改名.DataFrame.drop .DataFrame.rename

一、pandas.DataFrame.drop删除行

官方文档链接:这里。

DataFrame.drop(
labels=None, 
axis=0, 
index=None, 
columns=None, 
level=None, 
inplace=False, 
errors='raise')

功能:从DataFrame里边按行或按列删除指定的对象(labels)
labels:要删除的对象。PS:多个对象要用列表的形式输入;
axis:默认删除行。可选参数2个,按行删除axis=0/index,按列axis=1/columns;
index,columns:如df.drop(columns=['B', 'C'])等价于df.drop(['B', 'C'], axis=1)
level:用在multiindex透视表中,可选项,指定所删除行所在的层次。可是是int也可以是level对应的str名称;
inplace:默认不删除原表的数据,即inplace=False。若要删除,inplace=True;
errors:默认代码运行出错的话挂起并返回,即errors=raise。否则设置errors=ignore。

例子:

>>> df = pd.DataFrame(np.arange(12).reshape(3,4), columns=['A', 'B', 'C', 'D'])

在这里插入图片描述

  • 按列删除数据:
>>> df.drop(['B', 'C'], axis=1)  # 等价于 df.drop(columns=['B', 'C'])

在这里插入图片描述

  • 按行删除数据:
>>> df.drop([0, 1])

在这里插入图片描述

  • 删除multiindex形式的数据表中行/列:
 >>> midx = pd.MultiIndex(levels=[['lama', 'cow', 'falcon'],
...                              ['speed', 'weight', 'length']],
...                      labels=[[0, 0, 0, 1, 1, 1, 2, 2, 2],
...                              [0, 1, 2, 0, 1, 2, 0, 1, 2]])
>>> df = pd.DataFrame(index=midx, columns=['big', 'small'],
...                   data=[[45, 30], [200, 100], [1.5, 1], [30, 20],
...                         [250, 150], [1.5, 0.8], [320, 250],
...                         [1, 0.8], [0.3,0.2]])

翻译 python:入门 - 数据预处理 - pandas行列的删除和改名.DataFrame.drop .DataFrame.rename_第1张图片

>>> df.drop(index='cow', columns='small')

翻译 python:入门 - 数据预处理 - pandas行列的删除和改名.DataFrame.drop .DataFrame.rename_第2张图片

df.drop(index='length', level=1)  # python里边0表示第一,1表示第二,此处length处于index的第二层,即level=1。

翻译 python:入门 - 数据预处理 - pandas行列的删除和改名.DataFrame.drop .DataFrame.rename_第3张图片

二、pandas.DataFrame.rename修改行列名称

官方文档链接:这里

DataFrame.rename(mapper=None, 
index=None, 
columns=None, 
axis=None, 
copy=True, 
inplace=False, 
level=None)

index, columns & mapper, axis 使用方法:

  • (index=index_mapper, columns=columns_mapper, …)
  • (mapper, axis={‘index’, ‘columns’}, …)
    – mapper:即映射

例子:

import pandas as pd

midx = pd.MultiIndex(levels=[['lama', 'cow', 'falcon'],
                             ['speed', 'weight', 'length']],
                     labels=[[0, 0, 0, 1, 1, 1, 2, 2, 2],
                             [0, 1, 2, 0, 1, 2, 0, 1, 2]])
df = pd.DataFrame(index=midx, columns=['big', 'small'],
                  data=[[45, 30], [200, 100], [1.5, 1], [30, 20],
                        [250, 150], [1.5, 0.8], [320, 250], [1, 0.8], [0.3, 0.2]])

print(df)

翻译 python:入门 - 数据预处理 - pandas行列的删除和改名.DataFrame.drop .DataFrame.rename_第4张图片

print(df.rename(index={'lama': 'haha'}, columns={'big': 'da'}))

翻译 python:入门 - 数据预处理 - pandas行列的删除和改名.DataFrame.drop .DataFrame.rename_第5张图片

print(df.rename(str.upper, axis='index'))

翻译 python:入门 - 数据预处理 - pandas行列的删除和改名.DataFrame.drop .DataFrame.rename_第6张图片
inplace : 默认 False,即生成新的DataFrame。inplace=True更改原DataFrame。
copy : 没发现有啥区别。官方说Also copy underlying data
level : 应用前提是MultiIndex,指明在哪个level执行rename。

例如有如下数据:
翻译 python:入门 - 数据预处理 - pandas行列的删除和改名.DataFrame.drop .DataFrame.rename_第7张图片
代码:

a = df.rename(index={'length': 'changdu'})
b = df.rename(index={'length': 'changdu'}, level=0)
print(a)
print(b)

结果:
翻译 python:入门 - 数据预处理 - pandas行列的删除和改名.DataFrame.drop .DataFrame.rename_第8张图片

你可能感兴趣的:(python:数据预处理,pandas,删除,python,数据预处理)