Pandas drop删除数据集中不需要的行或列
参考:pandas drop
pandas
是一个强大的数据处理库,它提供了许多用于数据清理和分析的功能。其中,drop
函数是一个非常重要的功能,它可以帮助我们删除数据集中不需要的行或列。在本文中,我们将详细介绍pandas drop
函数的使用方法。
1. 基本用法
pandas drop
函数的基本语法如下:
DataFrame.drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise')
参数说明:
labels
:要删除的行或列的标签。axis
:删除行还是列。如果axis=0
,则删除行,如果axis=1
,则删除列。index
:要删除的行的标签。columns
:要删除的列的标签。level
:用于多级索引。inplace
:是否在原地修改数据。如果inplace=True
,则在原地修改数据,如果inplace=False
,则返回一个新的数据集。errors
:如果设置为'raise'
,则当标签不存在时抛出错误,如果设置为'ignore'
,则当标签不存在时不做任何操作。
下面是一个基本的示例:
import pandas as pd
# 创建一个数据集
df = pd.DataFrame({
'A': ['foo', 'bar', 'baz', 'qux', 'quux', 'corge'],
'B': ['one', 'one', 'two', 'three', 'four', 'five'],
'C': pd.Series(range(6), dtype='float32'),
'D': pd.Timestamp('20130102'),
'E': pd.Categorical(["test", "train", "test", "train", "test", "train"]),
'F': 'pandasdataframe.com'
})
# 删除列'A'
df.drop('A', axis=1)
print(df)
Output:
2. 删除行
如果我们想要删除数据集中的某些行,我们可以使用drop
函数,并设置axis=0
。下面是一个示例:
import pandas as pd
# 创建一个数据集
df = pd.DataFrame({
'A': ['foo', 'bar', 'baz', 'qux', 'quux', 'corge'],
'B': ['one', 'one', 'two', 'three', 'four', 'five'],
'C': pd.Series(range(6), dtype='float32'),
'D': pd.Timestamp('20130102'),
'E': pd.Categorical(["test", "train", "test", "train", "test", "train"]),
'F': 'pandasdataframe.com'
})
# 删除行2和3
df.drop([2, 3], axis=0)
print(df)
Output:
3. 删除列
如果我们想要删除数据集中的某些列,我们可以使用drop
函数,并设置axis=1
。下面是一个示例:
import pandas as pd
# 创建一个数据集
df = pd.DataFrame({
'A': ['foo', 'bar', 'baz', 'qux', 'quux', 'corge'],
'B': ['one', 'one', 'two', 'three', 'four', 'five'],
'C': pd.Series(range(6), dtype='float32'),
'D': pd.Timestamp('20130102'),
'E': pd.Categorical(["test", "train", "test", "train", "test", "train"]),
'F': 'pandasdataframe.com'
})
# 删除列'B'和'C'
df.drop(['B', 'C'], axis=1)
print(df)
Output:
4. 在原地修改数据
如果我们想要在原地修改数据,而不是返回一个新的数据集,我们可以设置inplace=True
。下面是一个示例:
import pandas as pd
# 创建一个数据集
df = pd.DataFrame({
'A': ['foo', 'bar', 'baz', 'qux', 'quux', 'corge'],
'B': ['one', 'one', 'two', 'three', 'four', 'five'],
'C': pd.Series(range(6), dtype='float32'),
'D': pd.Timestamp('20130102'),
'E': pd.Categorical(["test", "train", "test", "train", "test", "train"]),
'F': 'pandasdataframe.com'
})
# 在原地删除列'B'
df.drop('B', axis=1, inplace=True)
print(df)
Output:
5. 处理错误
如果我们尝试删除不存在的标签,drop
函数默认会抛出一个错误。如果我们不希望抛出错误,我们可以设置errors='ignore'
。下面是一个示例:
import pandas as pd
# 创建一个数据集
df = pd.DataFrame({
'A': ['foo', 'bar', 'baz', 'qux', 'quux', 'corge'],
'B': ['one', 'one', 'two', 'three', 'four', 'five'],
'C': pd.Series(range(6), dtype='float32'),
'D': pd.Timestamp('20130102'),
'E': pd.Categorical(["test", "train", "test", "train", "test", "train"]),
'F': 'pandasdataframe.com'
})
# 尝试删除不存在的列'G'
df.drop('G', axis=1, errors='ignore')
print(df)
Output:
6. 使用index
和columns
参数
我们也可以使用index
和columns
参数来删除行和列。下面是一个示例:
import pandas as pd
# 创建一个数据集
df = pd.DataFrame({
'A': ['foo', 'bar', 'baz', 'qux', 'quux', 'corge'],
'B': ['one', 'one', 'two', 'three', 'four', 'five'],
'C': pd.Series(range(6), dtype='float32'),
'D': pd.Timestamp('20130102'),
'E': pd.Categorical(["test", "train", "test", "train", "test", "train"]),
'F': 'pandasdataframe.com'
})
# 删除行2和3,列'B'和'C'
df.drop(index=[2, 3], columns=['B', 'C'])
print(df)
Output:
7. 使用多级索引
如果我们的数据集有多级索引,我们可以使用level
参数来删除特定级别的行或列。下面是一个示例:
import pandas as pd
# 创建一个具有多级索引的数据集
df = pd.DataFrame({
'A': ['foo', 'bar', 'baz', 'qux', 'quux', 'corge'],
'B': ['one', 'one', 'two', 'three', 'four', 'five'],
'C': pd.Series(range(6), dtype='float32'),
'D': pd.Timestamp('20130102'),
'E': pd.Categorical(["test", "train", "test", "train", "test", "train"]),
'F': 'pandasdataframe.com'
}).set_index(['A', 'B'])
# 删除级别为'A'的行
df.drop('foo', level='A')
print(df)
Output:
总结起来,pandas drop
函数是一个非常强大的工具,它可以帮助我们删除数据集中不需要的行或列。希望本文能帮助你更好地理解和使用pandas drop
函数。