Pandas - 索引相关的常用函数

isin

构造一个 Series 结构:

>> import pandas as pd
>> import numpy as np
>> s = pd.Series(data=np.arange(10,15), index=list('abcde'))
>> s
a    10
b    11
c    12
d    13
e    14
dtype: int32

s.isin 判断 Series 中的值是否在指定范围内:

>> s.isin([10,12,14])
a     True
b    False
c     True
d    False
e     True
dtype: bool

利用返回的布尔索引,可以将对应的值取出来:

>> s[s.isin([10,12,14])]
a    10
c    12
e    14
dtype: int32

isin 还可以应用在索引上,即使是多级索引。下面,首先构造一个多级索引的 Series

>> s2 = pd.Series(data=np.random.randint(0,10,6), index=pd.MultiIndex.from_product([[0,1],['a','b','c']]))
>> s2
0  a    9
   b    2
   c    5
1  a    4
   b    0
   c    1
dtype: int32

在多级索引上使用 isin

>> s2.index.isin([(1,'a'),(0,'c')])
array([False, False,  True,  True, False, False])

利用返回的布尔数组,可以取出相应的值:

>> s2[s2.index.isin([(1,'a'),(0,'c')])]
0  c    5
1  a    4
dtype: int32

where

where:Replace values where the condition is False.

首先构造一个 DataFrame

>> df = pd.DataFrame(np.random.randn(8,4), index=pd.date_range('20211013', periods=8), columns=['A','B','C','D'])
>> df

df.where(df<0) 默认返回的 DataFrame 将使用 NAN 替换不满足条件处的值。

>> df.where(df<0)

也可以指定操作,比如将不满足条件处的值取反:

>> df.where(df<0, -df)

query

query: Query the columns of a DataFrame with a boolean expression.

首选构造一个随机的 DataFrame

>> df = pd.DataFrame(np.random.rand(10,3), columns=list('abc'))
>> df

找出 a 列的值比 b 列小的记录:

>> df.query('a

找出 a 列的值比 b 列小,并且 b 列的值又小于 c 列的记录:

>> df.query('a

你可能感兴趣的:(Pandas - 索引相关的常用函数)