pandas.Series.loc#
- property Series.loc#
通过标签或布尔数组访问一组行和列。
.loc[]
主要基于标签,但也可以与布尔数组一起使用。允许的输入包括:
单个标签,例如
5
或'a'
,(请注意5
被解释为 标签 的索引,以及 绝不可能 作为沿索引的整数位置)。标签的列表或数组,例如
['a', 'b', 'c']
。带有标签的切片对象,例如
'a':'f'
。警告
请注意,与通常的 Python 切片相反, both 包括起点和终点
与被切割轴长度相同的布尔数组,例如
[True, False, True]
。一个可对齐的布尔级数。键的索引将在掩码之前对齐。
一个可对齐的索引。返回的选择的索引将是输入。
A
callable
只有一个参数的函数(调用Series或DataFrame),并返回用于索引的有效输出(上面的一个)
见更多 Selection by Label 。
- 加薪
- KeyError
如果找不到任何项目。
- IndexingError
如果传递了索引键,并且其索引与帧索引不可对齐。
参见
DataFrame.at
访问行/列标签对的单个值。
DataFrame.iloc
按整数位置访问一组行和列。
DataFrame.xs
返回系列/数据帧的横截面(行或列)。
Series.loc
使用标签访问值的组。
示例
获取价值
>>> df = pd.DataFrame([[1, 2], [4, 5], [7, 8]], ... index=['cobra', 'viper', 'sidewinder'], ... columns=['max_speed', 'shield']) >>> df max_speed shield cobra 1 2 viper 4 5 sidewinder 7 8
单一标签。请注意,这将以Series的形式返回该行。
>>> df.loc['viper'] max_speed 4 shield 5 Name: viper, dtype: int64
标签列表。注意使用
[[]]
返回DataFrame。>>> df.loc[['viper', 'sidewinder']] max_speed shield viper 4 5 sidewinder 7 8
行和列的单一标签
>>> df.loc['cobra', 'shield'] 2
具有行标签和列标签的切片。如上所述,请注意,切片的开始和结束都包括在内。
>>> df.loc['cobra':'viper', 'max_speed'] cobra 1 viper 4 Name: max_speed, dtype: int64
与行轴长度相同的布尔列表
>>> df.loc[[False, False, True]] max_speed shield sidewinder 7 8
可对齐的布尔级数:
>>> df.loc[pd.Series([False, True, False], ... index=['viper', 'sidewinder', 'cobra'])] max_speed shield sidewinder 7 8
索引(行为与
df.reindex
)>>> df.loc[pd.Index(["cobra", "viper"], name="foo")] max_speed shield foo cobra 1 2 viper 4 5
返回布尔级数的条件
>>> df.loc[df['shield'] > 6] max_speed shield sidewinder 7 8
返回指定了列标签的布尔级数的条件
>>> df.loc[df['shield'] > 6, ['max_speed']] max_speed sidewinder 7
返回布尔级数的Callable
>>> df.loc[lambda df: df['shield'] == 8] max_speed shield sidewinder 7 8
设置值
为与标签列表匹配的所有项目设置值
>>> df.loc[['viper', 'sidewinder'], ['shield']] = 50 >>> df max_speed shield cobra 1 2 viper 4 50 sidewinder 7 50
设置整行的值
>>> df.loc['cobra'] = 10 >>> df max_speed shield cobra 10 10 viper 4 50 sidewinder 7 50
设置整列的值
>>> df.loc[:, 'max_speed'] = 30 >>> df max_speed shield cobra 30 10 viper 30 50 sidewinder 30 50
设置与可调用条件匹配的行的值
>>> df.loc[df['shield'] > 35] = 0 >>> df max_speed shield cobra 30 10 viper 0 0 sidewinder 0 0
获取具有整数标签的索引的DataFrame上的值
使用整数作为索引的另一个示例
>>> df = pd.DataFrame([[1, 2], [4, 5], [7, 8]], ... index=[7, 8, 9], columns=['max_speed', 'shield']) >>> df max_speed shield 7 1 2 8 4 5 9 7 8
具有行的整数标签的切片。如上所述,请注意,切片的开始和结束都包括在内。
>>> df.loc[7:9] max_speed shield 7 1 2 8 4 5 9 7 8
使用多索引获取值
将DataFrame与多索引一起使用的一些示例
>>> tuples = [ ... ('cobra', 'mark i'), ('cobra', 'mark ii'), ... ('sidewinder', 'mark i'), ('sidewinder', 'mark ii'), ... ('viper', 'mark ii'), ('viper', 'mark iii') ... ] >>> index = pd.MultiIndex.from_tuples(tuples) >>> values = [[12, 2], [0, 4], [10, 20], ... [1, 4], [7, 1], [16, 36]] >>> df = pd.DataFrame(values, columns=['max_speed', 'shield'], index=index) >>> df max_speed shield cobra mark i 12 2 mark ii 0 4 sidewinder mark i 10 20 mark ii 1 4 viper mark ii 7 1 mark iii 16 36
单一标签。注意:这将返回一个只有一个索引的DataFrame。
>>> df.loc['cobra'] max_speed shield mark i 12 2 mark ii 0 4
单索引元组。请注意,这将返回一个Series。
>>> df.loc[('cobra', 'mark ii')] max_speed 0 shield 4 Name: (cobra, mark ii), dtype: int64
行和列的单个标签。类似于传入元组,它返回一个Series。
>>> df.loc['cobra', 'mark i'] max_speed 12 shield 2 Name: (cobra, mark i), dtype: int64
单元组。注意使用
[[]]
返回DataFrame。>>> df.loc[[('cobra', 'mark ii')]] max_speed shield cobra mark ii 0 4
具有列的单个标签的索引的单个元组
>>> df.loc[('cobra', 'mark i'), 'shield'] 2
从索引元组到单个标签切片
>>> df.loc[('cobra', 'mark i'):'viper'] max_speed shield cobra mark i 12 2 mark ii 0 4 sidewinder mark i 10 20 mark ii 1 4 viper mark ii 7 1 mark iii 16 36
从索引元组到索引元组切片
>>> df.loc[('cobra', 'mark i'):('viper', 'mark ii')] max_speed shield cobra mark i 12 2 mark ii 0 4 sidewinder mark i 10 20 mark ii 1 4 viper mark ii 7 1