pandas.DataFrame.loc # 属性 数据框。loc [来源] # 通过标签或布尔数组访问一组行和列。 .loc[]主要基于标签,但也可以与布尔数组一起使用。 允许的输入有: 单个标签,例如5或'a',(请注意,它5被解释为索引的标签,而不是解释为沿索引的整数位置)。 标签列表或数组,例如。['a', 'b', 'c'] 带有标签的切片对象,例如'a':'f'. 警告 请注意,与通常的 python 切片相反,开始和结束都包含在内 与被切片的轴长度相同的布尔数组,例如。[True, False, True] 可对齐的布尔系列。键的索引将在屏蔽之前对齐。 可对齐索引。返回选择的索引将作为输入。 callable具有一个参数(调用 Series 或 DataFrame)并返回索引有效输出(上述之一)的函数 更多信息请参见按标签选择。 加薪: 按键错误如果没有找到任何项目。 索引错误如果传递了索引键并且其索引与帧索引无法对齐。 也可以看看 DataFrame.at访问行/列标签对的单个值。 DataFrame.iloc按整数位置访问行和列组。 DataFrame.xs返回 Series/DataFrame 的横截面(行或列)。 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 单一标签。请注意,这会将行作为系列返回。 >>> df.loc['viper'] max_speed 4 shield 5 Name: viper, dtype: int64 标签列表。注意 using[[]]返回一个 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 多个条件使用&返回布尔系列 >>> df.loc[(df['max_speed'] > 1) & (df['shield'] < 8)] max_speed shield viper 4 5 多个条件使用|返回布尔系列 >>> df.loc[(df['max_speed'] > 4) | (df['shield'] < 5)] max_speed shield cobra 1 2 sidewinder 7 8 请确保每个条件都用括号括起来()。 有关布尔索引的更多详细信息和说明,请参阅用户指南。 笔记 如果您发现自己在 中使用了 3 个或更多条件.loc[],请考虑使用高级索引。 有关在多索引数据帧上使用的信息,请参阅下文.loc[]。 返回布尔系列的可调用 >>> 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 添加值匹配位置 >>> df.loc["viper", "shield"] += 5 >>> df max_speed shield cobra 30 10 viper 0 5 sidewinder 0 0 使用 aSeries或 aDataFrame设置匹配索引标签的值,而不是索引位置。 >>> shuffled_df = df.loc[["viper", "cobra", "sidewinder"]] >>> df.loc[:] += shuffled_df >>> df max_speed shield cobra 60 20 viper 0 10 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 使用 MultiIndex 获取值 使用带有 MultiIndex 的 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 单索引元组。请注意,这会返回一个系列。 >>> df.loc[('cobra', 'mark ii')] max_speed 0 shield 4 Name: (cobra, mark ii), dtype: int64 行和列的单个标签。与传入元组类似,这会返回一个系列。 >>> df.loc['cobra', 'mark i'] max_speed 12 shield 2 Name: (cobra, mark i), dtype: int64 单元组。注意 using[[]]返回一个 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 请参阅用户指南 以获取高级索引的更多详细信息和说明。