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


Python pyspark DataFrame.reset_index用法及代碼示例


本文簡要介紹 pyspark.pandas.DataFrame.reset_index 的用法。

用法:

DataFrame.reset_index(level: Union[int, Any, Tuple[Any, …], Sequence[Union[int, Any, Tuple[Any, …]]], None] = None, drop: bool = False, inplace: bool = False, col_level: int = 0, col_fill: str = '') → Optional[pyspark.pandas.frame.DataFrame]

重置索引,或它的一個級別。

對於帶有multi-level索引的DataFrame,返回新的DataFrame,並在索引名稱下的列中包含標簽信息,默認為‘level_0’, ‘level_1’等,如果有則為None。對於標準索引,將使用索引名稱(如果已設置),否則將使用默認的 ‘index’ 或 ‘level_0’(如果已采用 ‘index’)。

參數

levelint, str, tuple, or list, 默認無

僅從索引中刪除給定的級別。默認情況下刪除所有級別。

drop布爾值,默認為 False

不要嘗試將索引插入 DataFrame 列。這會將索引重置為默認整數索引。

inplace布爾值,默認為 False

就地修改DataFrame(不創建新對象)。

col_levelint或str,默認0

如果列有多個級別,則確定標簽插入到哪個級別。默認情況下,它被插入到第一級。

col_fill對象,默認 ''

如果列具有多個級別,則確定其他級別的命名方式。如果 None 則重複索引名稱。

返回

DataFrame

DataFrame 使用新索引。

例子

>>> df = ps.DataFrame([('bird', 389.0),
...                    ('bird', 24.0),
...                    ('mammal', 80.5),
...                    ('mammal', np.nan)],
...                   index=['falcon', 'parrot', 'lion', 'monkey'],
...                   columns=('class', 'max_speed'))
>>> df
         class  max_speed
falcon    bird      389.0
parrot    bird       24.0
lion    mammal       80.5
monkey  mammal        NaN

當我們重置索引時,舊索引作為列添加。與 pandas 不同,pandas-on-Spark 不會自動添加順序索引。下麵的 0, 1, 2, 3 隻有在我們顯示 DataFrame 時才會出現。

>>> df.reset_index()
    index   class  max_speed
0  falcon    bird      389.0
1  parrot    bird       24.0
2    lion  mammal       80.5
3  monkey  mammal        NaN

我們可以使用 drop 參數來避免將舊索引添加為列:

>>> df.reset_index(drop=True)
    class  max_speed
0    bird      389.0
1    bird       24.0
2  mammal       80.5
3  mammal        NaN

您還可以將 reset_indexMultiIndex 一起使用。

>>> index = pd.MultiIndex.from_tuples([('bird', 'falcon'),
...                                    ('bird', 'parrot'),
...                                    ('mammal', 'lion'),
...                                    ('mammal', 'monkey')],
...                                   names=['class', 'name'])
>>> columns = pd.MultiIndex.from_tuples([('speed', 'max'),
...                                      ('species', 'type')])
>>> df = ps.DataFrame([(389.0, 'fly'),
...                    ( 24.0, 'fly'),
...                    ( 80.5, 'run'),
...                    (np.nan, 'jump')],
...                   index=index,
...                   columns=columns)
>>> df  
               speed species
                 max    type
class  name
bird   falcon  389.0     fly
       parrot   24.0     fly
mammal lion     80.5     run
       monkey    NaN    jump

如果索引有多個級別,我們可以重置其中的一個子集:

>>> df.reset_index(level='class')  
         class  speed species
                  max    type
name
falcon    bird  389.0     fly
parrot    bird   24.0     fly
lion    mammal   80.5     run
monkey  mammal    NaN    jump

如果我們不刪除索引,默認情況下,它被放置在頂層。我們可以把它放在另一個層次:

>>> df.reset_index(level='class', col_level=1)  
                speed species
         class    max    type
name
falcon    bird  389.0     fly
parrot    bird   24.0     fly
lion    mammal   80.5     run
monkey  mammal    NaN    jump

當索引插入到另一個級別下時,我們可以使用參數 col_fill 指定在哪一個下:

>>> df.reset_index(level='class', col_level=1,
...                col_fill='species')  
              species  speed species
                class    max    type
name
falcon           bird  389.0     fly
parrot           bird   24.0     fly
lion           mammal   80.5     run
monkey         mammal    NaN    jump

如果我們為 col_fill 指定不存在的級別,則會創建它:

>>> df.reset_index(level='class', col_level=1,
...                col_fill='genus')  
                genus  speed species
                class    max    type
name
falcon           bird  389.0     fly
parrot           bird   24.0     fly
lion           mammal   80.5     run
monkey         mammal    NaN    jump

相關用法


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