pandas中的 loc的使用(pandas.DataFrame.loc)

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

参考官方文档。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

种麦南山下

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值