df.drop()
df.drop()
是 Pandas 中用于删除行或列的方法,可以通过指定标签、轴方向或索引层级来灵活删除。下面我将详细解释每个参数的含义和如何使用它们。
语法
df.drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise')
参数说明
-
labels:
- 要删除的行或列的标签。可以传入单个标签,也可以传入标签列表。
- 示例:
labels=[0, 2]
表示删除索引为0
和2
的行。
-
axis:
- 指定删除的方向,
axis=0
表示删除行,axis=1
表示删除列。 - 默认值是
0
(删除行)。 - 示例:
axis=1
表示删除列。
- 指定删除的方向,
-
index:
- 用来指定要删除的行的标签。如果指定了
index
,则labels
和axis
不需要使用。 - 示例:
index=[0, 2]
表示删除行索引为0
和2
的行。
- 用来指定要删除的行的标签。如果指定了
-
columns:
- 用来指定要删除的列的标签。如果指定了
columns
,则labels
和axis
不需要使用。 - 示例:
columns=['a', 'b']
表示删除列a
和b
。
- 用来指定要删除的列的标签。如果指定了
-
level:
- 如果 DataFrame 使用了多级索引(MultiIndex),可以指定要删除的索引层级。
- 示例:
level=0
表示删除第一层的标签。
-
inplace:
- 布尔值,决定是否在原始 DataFrame 上进行操作。
- 默认值为
False
,表示返回一个新的 DataFrame,原 DataFrame 不会改变。 - 如果设置为
True
,则会直接在原 DataFrame 上修改,不返回新的 DataFrame。 - 示例:
inplace=True
会直接修改原 DataFrame。
-
errors:
- 控制删除时的错误处理行为。可以选择
'raise'
或'ignore'
。 - 默认值是
'raise'
,即如果尝试删除不存在的标签,会抛出错误。 - 如果设置为
'ignore'
,则会忽略删除不存在标签的错误。 - 示例:
errors='ignore'
会在标签不存在时不抛出错误。
- 控制删除时的错误处理行为。可以选择
举个例子说明:
假设有以下的 DataFrame df
:
import pandas as pd
data = {'a': [1, 2, 3],
'b': [4, 5, 6],
'c': [7, 8, 9]}
df = pd.DataFrame(data, index=[0, 1, 2])
df
的内容是:
a b c
0 1 4 7
1 2 5 8
2 3 6 9
1. 删除指定行
df.drop(labels=1, axis=0)
返回结果:
a b c
0 1 4 7
2 3 6 9
- 删除了索引为
1
的行,结果返回了新的 DataFrame。
2. 删除指定列
df.drop(columns='b')
返回结果:
a c
0 1 7
1 2 8
2 3 9
- 删除了列
b
,返回了新的 DataFrame。
3. 删除多行
df.drop(index=[0, 2])
返回结果:
a b c
1 2 5 8
- 删除了索引为
0
和2
的行。
4. 删除多列
df.drop(columns=['a', 'c'])
返回结果:
b
0 4
1 5
2 6
- 删除了列
a
和c
。
5. 使用 inplace=True
修改原 DataFrame
df.drop(labels=1, axis=0, inplace=True)
- 这会直接在原 DataFrame
df
中删除索引为1
的行,而不返回新的 DataFrame。
6. 使用 errors='ignore'
忽略删除不存在标签的错误
df.drop(labels=10, axis=0, errors='ignore')
- 由于索引
10
不存在,所以如果设置errors='ignore'
,不会抛出错误,直接返回原 DataFrame。
总结:
df.drop()
是一个非常灵活的函数,允许你通过指定标签、轴、层级等来删除行或列。- 可以通过
inplace=True
来修改原始 DataFrame,避免创建新的 DataFrame。 - 通过
errors='ignore'
,可以防止在删除不存在标签时抛出错误。