Python – 从多索引 Pandas Dataframe 中删除特定行
在 Pandas 中,可以使用多索引来进行数据分组和分类。但有时候,我们需要从多索引 Dataframe 中删除特定的行,这就需要用到一些 Pandas 中的函数。
更多Pandas相关文章,请阅读:Pandas 教程
使用.drop()删除行
Pandas 中的 .drop()
函数可以删除 Dataframe 中的行或列。可以通过 axis
参数来指定要删除的轴,inplace
参数用于指定是否要修改原来的 Dataframe。
下面是一个包含多索引的示例 Dataframe:
import pandas as pd
data = {
('A', 1): [1, 2, 3, 4],
('A', 2): [5, 6, 7, 8],
('B', 1): [9, 10, 11, 12],
('B', 2): [13, 14, 15, 16]
}
df = pd.DataFrame(data)
print(df)
输出结果:
A B
1 2 1 2
0 1 5 9 13
1 2 6 10 14
2 3 7 11 15
3 4 8 12 16
假设我们要删除第一列“1”,可以使用以下代码:
df.drop(('A', 1), axis=1, inplace=True)
print(df)
输出结果:
A B
2 1 2
0 5 9 13
1 6 10 14
2 7 11 15
3 8 12 16
使用.loc[]删除行
除了 .drop()
,还可以使用 .loc[]
来删除特定的行。.loc[]
的用途是根据行标签或条件筛选行。下面是一个从文件中读取的示例 Dataframe:
df = pd.read_csv('data.csv', index_col=['Name', 'Age'])
print(df)
输出结果:
Gender Department Salary
Name Age
Alice 25.0 F HR 50000.0
26.0 F CS 60000.0
Bob 27.0 M IT 45000.0
Charlie 23.0 M HR 65000.0
30.0 NaN CS 100000.0
我们要删除行标签为('Alice', 25.0)
的那一行,可以使用以下代码:
df.drop(('Alice', 25.0), inplace=True)
print(df)
输出结果:
Gender Department Salary
Name Age
Alice 26.0 F CS 60000.0
Bob 27.0 M IT 45000.0
Charlie 23.0 M HR 65000.0
30.0 NaN CS 100000.0
如果要删除多个行,可以使用一个包含行标签的列表作为.loc[]
的参数,例如:
df.drop(labels=[('Alice', 26.0), ('Bob', 27.0)], inplace=True)
print(df)
输出结果:
Gender Department Salary
Name Age
Charlie 23.0 M HR 65000.0
30.0 NaN CS 100000.0
结论
使用 Pandas 的 .drop()
和 .loc[]
函数可以方便地从多索引 Dataframe 中删除特定的行,使数据处理更加灵活。在删除行之前,需要对行标签或条件进行仔细选择,以免删除了重要的数据。