看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
pandas
的 xs
方法是用于从 DataFrame
或 Series
中按标签选择数据的便捷方法,特别适用于多层索引(MultiIndex)。以下是对 xs
方法的详细讲解,包括其语法、参数、返回值及使用场景。
DataFrame.xs(key,
axis=0,
level=None,
drop_level=True)
key
:要选择的数据标签,类型可以是单个标签或列表(如果是多个级别)。axis
:默认为0,表示按行选择;若为1,表示按列选择。level
:指定从哪个级别选择数据。对于多层索引,这个参数可以是单个级别名称或级别的整数索引。drop_level
:布尔值,默认为 True
。如果为 True
,则在返回结果中丢弃选择的级别。DataFrame
或 Series
,具体取决于选择的数据。xs
方法常用于多层索引的数据选择,可以快速访问和提取特定的子集数据。
假设有一个简单的 DataFrame
:
import pandas as pd
data = {'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8]}
df = pd.DataFrame(data)
print(df)
输出结果:
'''
A B
0 1 5
1 2 6
2 3 7
3 4 8
'''
选择第二行数据:
result = df.xs(1)
print(result)
输出结果:
'''
A 2
B 6
Name: 1, dtype: int64
'''
创建一个带有多层索引的 DataFrame
:
index = pd.MultiIndex.from_product([['A', 'B'], [1, 2]])
data = {'C': [10, 20, 30, 40], 'D': [50, 60, 70, 80]}
df = pd.DataFrame(data, index=index)
print(df)
输出结果:
'''
C D
A 1 10 50
2 20 60
B 1 30 70
2 40 80
'''
选择索引为 A
的数据:
result = df.xs('A', level=0)
print(result)
输出结果:
'''
C D
1 10 50
2 20 60
'''
选择索引为 1
的数据:
result = df.xs(1, level=1)
print(result)
输出结果:
'''
C D
A 10 50
B 30 70
'''
使用 drop_level
参数保留选择的级别:
result = df.xs('A', level=0, drop_level=False)
print(result)
输出结果:
'''
C D
A 1 10 50
2 20 60
'''
使用 axis
参数按列选择:
data = {'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8], 'C': [9, 10, 11, 12]}
df = pd.DataFrame(data, index=['X', 'Y', 'Z', 'W'])
print(df)
输出结果:
'''
A B C
X 1 5 9
Y 2 6 10
Z 3 7 11
W 4 8 12
'''
选择列 B
的数据:
result = df.xs('B', axis=1)
print(result)
输出结果:
'''
X 5
Y 6
Z 7
W 8
Name: B, dtype: int64
'''
下面我们来讲解一下 pandas
中 Series
的 xs
方法使用示例。
假设有一个简单的 Series
:
import pandas as pd
data = [1, 2, 3, 4]
index = ['a', 'b', 'c', 'd']
series = pd.Series(data, index=index)
print(series)
输出结果:
'''
a 1
b 2
c 3
d 4
dtype: int64
'''
选择索引为 b
的数据:
result = series.xs('b')
print(result)
输出结果:
'''
2
'''
创建一个带有多层索引的 Series
:
index = pd.MultiIndex.from_product([['A', 'B'], [1, 2]])
data = [10, 20, 30, 40]
series = pd.Series(data, index=index)
print(series)
输出结果:
'''
A 1 10
2 20
B 1 30
2 40
dtype: int64
'''
选择索引为 A
的数据:
result = series.xs('A', level=0)
print(result)
输出结果:
'''
1 10
2 20
dtype: int64
'''
选择索引为 1
的数据:
result = series.xs(1, level=1)
print(result)
输出结果:
'''
A 10
B 30
dtype: int64
'''
使用 drop_level
参数保留选择的级别:
result = series.xs('A', level=0, drop_level=False)
print(result)
输出结果:
'''
A 1 10
2 20
dtype: int64
'''
xs
方法是 pandas
提供的一个强大工具,特别适用于从多层索引数据中快速提取特定子集。通过灵活使用其参数,可以满足不同的数据选择需求。在 Series
中使用 xs
方法同样可以方便地从多层索引数据中提取特定子集。通过指定不同的参数,可以灵活地控制选择的级别和返回结果的格式。在 Series
中使用 xs
方法同样可以方便地从多层索引数据中提取特定子集。通过指定不同的参数,可以灵活地控制选择的级别和返回结果的格式。
更新时间:July 14, 2024, 11:34 a.m. 标签:pandas python xs 标签