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


Python pyspark Series.loc用法及代碼示例


本文簡要介紹 pyspark.pandas.Series.loc 的用法。

用法:

property Series.loc

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

.loc[] 主要基於標簽,但也可以與從 DataFrame 或係列派生的條件布爾係列一起使用。

允許的輸入是:

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

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

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

  • 從 DataFrame 或係列派生的條件布爾係列

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

  • 一個可對齊的布爾 Pandas 係列到被切片的列軸。鍵的索引將在屏蔽之前對齊。

Pandas 允許的不允許輸入是:

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

  • 帶有一個參數的 callable 函數(調用係列、DataFrame 或麵板)並返回有效的索引輸出(以上之一)

注意

尚不支持MultiIndex。

注意

請注意,與通常的 python 切片相反,兩個都包括起點和終點,不允許切片的步長。

注意

對於行選擇的標簽列表或數組,pandas-on-Spark 充當過濾器,無需按標簽重新排序。

例子

獲取值

>>> df = ps.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。另請注意,pandas-on-Spark 隻是一個過濾器,沒有按標簽重新排序。

>>> df.loc[['viper', 'sidewinder']]
            max_speed  shield
viper               4       5
sidewinder          7       8
>>> df.loc[['sidewinder', 'viper']]
            max_speed  shield
viper               4       5
sidewinder          7       8

列的單個標簽。

>>> df.loc['cobra', 'shield']
2

行的標簽列表。

>>> df.loc[['cobra'], 'shield']
cobra    2
Name: shield, dtype: int64

列的標簽列表。

>>> df.loc['cobra', ['shield']]
shield    2
Name: cobra, dtype: int64

行和列的標簽列表。

>>> df.loc[['cobra'], ['shield']]
       shield
cobra       2

帶有行標簽和列標簽的切片。如上所述,請注意切片的開始和停止都包括在內。

>>> df.loc['cobra':'viper', 'max_speed']
cobra    1
viper    4
Name: max_speed, dtype: int64

返回布爾係列的條件

>>> df.loc[df['shield'] > 6]
            max_speed  shield
sidewinder          7       8

返回具有指定列標簽的布爾係列的條件

>>> df.loc[df['shield'] > 6, ['max_speed']]
            max_speed
sidewinder          7

與被切片的列軸長度相同的布爾數組。

>>> df.loc[:, [False, True]]
            shield
cobra            2
viper            5
sidewinder       8

與被切片的列軸對齊的布爾係列。

>>> df.loc[:, pd.Series([False, True], index=['max_speed', 'shield'])]
            shield
cobra            2
viper            5
sidewinder       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[:, ['max_speed', 'shield']] = 100
>>> df
            max_speed  shield
cobra             100     100
viper             100     100
sidewinder        100     100

用 Series 設置值

>>> df.loc[:, 'shield'] = df['shield'] * 2
>>> df
            max_speed  shield
cobra             100     200
viper             100     200
sidewinder        100     200

使用具有整數標簽的索引獲取 DataFrame 上的值

另一個使用整數作為索引的例子

>>> df = ps.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

相關用法


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