官方文档链接:这里。
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])
>>> 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]])
>>> df.drop(index='cow', columns='small')
df.drop(index='length', level=1) # python里边0表示第一,1表示第二,此处length处于index的第二层,即level=1。
官方文档链接:这里
DataFrame.rename(mapper=None,
index=None,
columns=None,
axis=None,
copy=True,
inplace=False,
level=None)
index, columns
& mapper, axis
使用方法:
例子:
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)
print(df.rename(index={'lama': 'haha'}, columns={'big': 'da'}))
print(df.rename(str.upper, axis='index'))
inplace
: 默认 False,即生成新的DataFrame。inplace=True
更改原DataFrame。
copy
: 没发现有啥区别。官方说Also copy underlying data
level
: 应用前提是MultiIndex,指明在哪个level执行rename。
a = df.rename(index={'length': 'changdu'}) b = df.rename(index={'length': 'changdu'}, level=0) print(a) print(b)