Movatterモバイル変換


[0]ホーム

URL:


Skip to main content
Ctrl+K

pandas.Series.loc#

propertySeries.loc[source]#

Access a group of rows and columns by label(s) or a boolean array.

.loc[] is primarily label based, but may also be used with aboolean array.

Allowed inputs are:

  • A single label, e.g.5 or'a', (note that5 isinterpreted as alabel of the index, andnever as aninteger position along the index).

  • A list or array of labels, e.g.['a','b','c'].

  • A slice object with labels, e.g.'a':'f'.

    Warning

    Note that contrary to usual python slices,both thestart and the stop are included

  • A boolean array of the same length as the axis being sliced,e.g.[True,False,True].

  • An alignable boolean Series. The index of the key will be aligned beforemasking.

  • An alignable Index. The Index of the returned selection will be the input.

  • Acallable function with one argument (the calling Series orDataFrame) and that returns valid output for indexing (one of the above)

See more atSelection by Label.

Raises:
KeyError

If any items are not found.

IndexingError

If an indexed key is passed and its index is unalignable to the frame index.

See also

DataFrame.at

Access a single value for a row/column label pair.

DataFrame.iloc

Access group of rows and columns by integer position(s).

DataFrame.xs

Returns a cross-section (row(s) or column(s)) from the Series/DataFrame.

Series.loc

Access group of values using labels.

Examples

Getting values

>>>df=pd.DataFrame([[1,2],[4,5],[7,8]],...index=['cobra','viper','sidewinder'],...columns=['max_speed','shield'])>>>df            max_speed  shieldcobra               1       2viper               4       5sidewinder          7       8

Single label. Note this returns the row as a Series.

>>>df.loc['viper']max_speed    4shield       5Name: viper, dtype: int64

List of labels. Note using[[]] returns a DataFrame.

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

Single label for row and column

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

Slice with labels for row and single label for column. As mentionedabove, note that both the start and stop of the slice are included.

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

Boolean list with the same length as the row axis

>>>df.loc[[False,False,True]]            max_speed  shieldsidewinder          7       8

Alignable boolean Series:

>>>df.loc[pd.Series([False,True,False],...index=['viper','sidewinder','cobra'])]                     max_speed  shieldsidewinder          7       8

Index (same behavior asdf.reindex)

>>>df.loc[pd.Index(["cobra","viper"],name="foo")]       max_speed  shieldfoocobra          1       2viper          4       5

Conditional that returns a boolean Series

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

Conditional that returns a boolean Series with column labels specified

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

Multiple conditional using& that returns a boolean Series

>>>df.loc[(df['max_speed']>1)&(df['shield']<8)]            max_speed  shieldviper          4       5

Multiple conditional using| that returns a boolean Series

>>>df.loc[(df['max_speed']>4)|(df['shield']<5)]            max_speed  shieldcobra               1       2sidewinder          7       8

Please ensure that each condition is wrapped in parentheses().See theuser guidefor more details and explanations of Boolean indexing.

Note

If you find yourself using 3 or more conditionals in.loc[],consider usingadvanced indexing.

See below for using.loc[] on MultiIndex DataFrames.

Callable that returns a boolean Series

>>>df.loc[lambdadf:df['shield']==8]            max_speed  shieldsidewinder          7       8

Setting values

Set value for all items matching the list of labels

>>>df.loc[['viper','sidewinder'],['shield']]=50>>>df            max_speed  shieldcobra               1       2viper               4      50sidewinder          7      50

Set value for an entire row

>>>df.loc['cobra']=10>>>df            max_speed  shieldcobra              10      10viper               4      50sidewinder          7      50

Set value for an entire column

>>>df.loc[:,'max_speed']=30>>>df            max_speed  shieldcobra              30      10viper              30      50sidewinder         30      50

Set value for rows matching callable condition

>>>df.loc[df['shield']>35]=0>>>df            max_speed  shieldcobra              30      10viper               0       0sidewinder          0       0

Add value matching location

>>>df.loc["viper","shield"]+=5>>>df            max_speed  shieldcobra              30      10viper               0       5sidewinder          0       0

Setting using aSeries or aDataFrame sets the values matching theindex labels, not the index positions.

>>>shuffled_df=df.loc[["viper","cobra","sidewinder"]]>>>df.loc[:]+=shuffled_df>>>df            max_speed  shieldcobra              60      20viper               0      10sidewinder          0       0

Getting values on a DataFrame with an index that has integer labels

Another example using integers for the index

>>>df=pd.DataFrame([[1,2],[4,5],[7,8]],...index=[7,8,9],columns=['max_speed','shield'])>>>df   max_speed  shield7          1       28          4       59          7       8

Slice with integer labels for rows. As mentioned above, note that boththe start and stop of the slice are included.

>>>df.loc[7:9]   max_speed  shield7          1       28          4       59          7       8

Getting values with a MultiIndex

A number of examples using a DataFrame with a MultiIndex

>>>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  shieldcobra      mark i           12       2           mark ii           0       4sidewinder mark i           10      20           mark ii           1       4viper      mark ii           7       1           mark iii         16      36

Single label. Note this returns a DataFrame with a single index.

>>>df.loc['cobra']         max_speed  shieldmark i          12       2mark ii          0       4

Single index tuple. Note this returns a Series.

>>>df.loc[('cobra','mark ii')]max_speed    0shield       4Name: (cobra, mark ii), dtype: int64

Single label for row and column. Similar to passing in a tuple, thisreturns a Series.

>>>df.loc['cobra','mark i']max_speed    12shield        2Name: (cobra, mark i), dtype: int64

Single tuple. Note using[[]] returns a DataFrame.

>>>df.loc[[('cobra','mark ii')]]               max_speed  shieldcobra mark ii          0       4

Single tuple for the index with a single label for the column

>>>df.loc[('cobra','mark i'),'shield']2

Slice from index tuple to single label

>>>df.loc[('cobra','mark i'):'viper']                     max_speed  shieldcobra      mark i           12       2           mark ii           0       4sidewinder mark i           10      20           mark ii           1       4viper      mark ii           7       1           mark iii         16      36

Slice from index tuple to index tuple

>>>df.loc[('cobra','mark i'):('viper','mark ii')]                    max_speed  shieldcobra      mark i          12       2           mark ii          0       4sidewinder mark i          10      20           mark ii          1       4viper      mark ii          7       1

Please see theuser guidefor more details and explanations of advanced indexing.


[8]ページ先頭

©2009-2025 Movatter.jp