當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python pandas.DataFrame.loc用法及代碼示例

用法:

property DataFrame.loc

通過標簽或布爾數組訪問一組行和列。

.loc[] 主要基於標簽,但也可以與布爾數組一起使用。

允許的輸入是:

  • 單個標簽,例如5或者'a', (注意5被解釋為標簽的 index ,和絕不作為沿索引的整數位置)。

  • 標簽列表或數組,例如['a', 'b', 'c']

  • 帶有標簽的切片對象,例如'a':'f'

    警告

    請注意,與通常的 python 切片相反,兩個都包括起點和終點

  • 與被切片的軸長度相同的布爾數組,例如[True, False, True]

  • 一個可對齊的布爾係列。鍵的索引將在屏蔽之前對齊。

  • 一個可對齊的索引。返回選擇的索引將作為輸入。

  • callable 函數,帶有一個參數(調用 Series 或 DataFrame)並返回有效輸出以進行索引(上述之一)

在按標簽選擇中查看更多信息。

拋出

KeyError

如果沒有找到任何項目。

索引錯誤

如果傳遞了索引鍵並且其索引與幀索引不對齊。

例子

獲取值

>>> 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

標簽列表。注意使用[[]] 返回一個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[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

使用 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

單元組。注意使用[[]] 返回一個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

相關用法


注:本文由純淨天空篩選整理自pandas.pydata.org大神的英文原創作品 pandas.DataFrame.loc。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。