api参考:
其他:
例子:
一、获取值
>>> 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
1、单一标签。请注意,这会将行作为系列返回。
>>> df.loc['viper']
max_speed 4
shield 5
Name: viper, dtype: int64
2、标签列表。注意 using[[ ]]返回一个 DataFrame。
>>> df.loc[['viper', 'sidewinder']]
max_speed shield
viper 4 5
sidewinder 7 8
3、行和列的单一标签
>>> df.loc['cobra', 'shield']
2
4、带有行标签和列标签的切片。如上所述,请注意切片的开始和停止都包括在内。
>>> df.loc['cobra':'viper', 'max_speed']
cobra 1
viper 4
Name: max_speed, dtype: int64
5、与行轴长度相同的布尔列表
>>> df.loc[[False, False, True]]
max_speed shield
sidewinder 7 8
6、可对齐布尔系列
>>> df.loc[pd.Series([False, True, False],
index=['viper', 'sidewinder', 'cobra'])]
max_speed shield
sidewinder 7 8
7、索引(与 相同的行为df.reindex)
>>> df.loc[pd.Index(["cobra", "viper"], name="foo")]
max_speed shield
foo
cobra 1 2
viper 4 5
8、返回布尔系列的条件
>>> df.loc[df['shield'] > 6]
max_speed shield
sidewinder 7 8
9、返回指定列标签的布尔系列的条件
>>> df.loc[df['shield'] > 6, ['max_speed']]
max_speed
sidewinder 7
10、返回布尔系列的可调用对象
>>> df.loc[lambda df: df['shield'] == 8]
max_speed shield
sidewinder 7 8
二、设置值
1、为与标签列表匹配的所有项目设置值
>>> df.loc[['viper', 'sidewinder'], ['shield']] = 50
>>> df
max_speed shield
cobra 1 2
viper 4 50
sidewinder 7 50
2、为整行设置值
>>> df.loc['cobra'] = 10
>>> df
max_speed shield
cobra 10 10
viper 4 50
sidewinder 7 50
3、为整列设置值
>>> df.loc[:, 'max_speed'] = 30
>>> df
max_speed shield
cobra 30 10
viper 30 50
sidewinder 30 50
4、为匹配可调用条件的行设置值
>>> df.loc[df['shield'] > 35] = 0
>>> df
max_speed shield
cobra 30 10
viper 0 0
sidewinder 0 0
三、使用具有整数标签的索引获取 DataFrame 上的值
1、使用整数作为索引的另一个示例
>>> 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
2、用整数标签为行切片。如上所述,请注意切片的开始和停止都包括在内。
>>> df.loc[7:9]
max_speed shield
7 1 2
8 4 5
9 7 8
四、使用 MultiIndex 获取值
1、使用带有 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
2、单一标签。请注意,这将返回一个带有单个索引的 DataFrame。
>>> df.loc['cobra']
max_speed shield
mark i 12 2
mark ii 0 4
3、单索引元组。请注意,这将返回一个系列。
>>> df.loc[('cobra', 'mark ii')]
max_speed 0
shield 4
Name: (cobra, mark ii), dtype: int64
4、行和列的单一标签。与传入元组类似,这将返回一个系列。
>>> df.loc['cobra', 'mark i']
max_speed 12
shield 2
Name: (cobra, mark i), dtype: int64
5、单元组。注意 using[[ ]]返回一个 DataFrame。
>>> df.loc[[('cobra', 'mark ii')]]
max_speed shield
cobra mark ii 0 4
6、索引的单个元组,列的单个标签
>>> df.loc[('cobra', 'mark i'), 'shield']
2
7、从索引元组切片到单个标签
>>> 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
8、从索引元组切片到索引元组
>>> 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
参考官方文档。