pandas中isin 函式及其逆函式使用

2022-08-30 15:51:24 字數 3091 閱讀 9318

我使用這個函式就是用來清洗資料,刪選過濾掉dataframe中一些行。

這裡你需要知道dateframe中布林索引這個東西,可以用滿足布林條件的列值來過濾資料,如下

>>> df=pd.dataframe(np.random.randn(4,4),columns=['a','b','c','d'])

>>> df

a b c d

0 -0.018330

2.093506 -0.086293 -2.150479

10.104931 -0.271810 -0.054599

0.361612

20.590216

0.218049

0.157213

0.643540

3 -0.254449 -0.593278 -0.150455 -0.244485

>>> df.a>0

#布林索引

0false

1true

2true

3false

name: a, dtype: bool

#布林索引應用

>>> df[df.a>0]

a b c d

10.104931 -0.271810 -0.054599

0.361612

20.590216

0.218049

0.157213

0.643540

>>>

isin()

新增一列e

>>> df['e']=['a','a','c','b']

>>> df

a b cde

0 -0.018330

2.093506 -0.086293 -2.150479 a

10.104931 -0.271810 -0.054599

0.361612 a

20.590216

0.218049

0.157213

0.643540 c

3 -0.254449 -0.593278 -0.150455 -0.244485 b

>>> df.e.isin(['a','c'])

0true

1true

2true

3false

name: e, dtype: bool

>>> df.isin(['b','c'])#整個df也同樣適用

a b cde

0false

false

false

false

false

1false

false

false

false

false

2false

false

false

false

true

3false

false

false

false

true

#應用》 df[df.e.isin(['a','c'])]

a b cde

0 -0.018330

2.093506 -0.086293 -2.150479 a

10.104931 -0.271810 -0.054599

0.361612 a

20.590216

0.218049

0.157213

0.643540 c

>>>

isin()接受乙個列表,判斷該列中元素是否在列表中。

同時對多個列過濾,可以如下使用

df[df[某列].isin(條件)&df[某列].isin(條件)]

#應用》 df.d=[0,1,0,2]

>>> df[df.e

.isin(['a','d'])&df.d

.isin([0,])]

a b c d e

0 -0.01833

2.093506 -0.086293

0 a

也可以

不推薦,你試一下就知道

df.isin()

#應用》 df.d=[0,1,0,2]

>>> df

a b c d e

0 -0.018330

2.093506 -0.086293

0 a

10.104931 -0.271810 -0.054599

1 a

20.590216

0.218049

0.157213

0 c

3 -0.254449 -0.593278 -0.150455

2 b

>>> df[df.isin()]

a b c d e

0 nan nan nan 0.0 a

1 nan nan nan nan a

2 nan nan nan 0.0 nan

3 nan nan nan nan nan

#沒錯這不適合選出一行

>>> df.isin()

a b c d e

0false

false

false

true

true

1false

false

false

false

true

2false

false

false

true

false

3false

false

false

false

false

isin()的逆函式

告訴你沒有isnotin,它的反函式就是在前面加上~,其他用法同上。

pandas中的isin函式詳解

今天有個同學問到,not in 的邏輯,想用 sql 的select c s from t1 left join t2 on t1.key t2.key where t2.key is null 在 python 中的邏輯來實現,實現了 left join 了 直接用join方法 但是不知道怎麼實現...

pandas中apply 函式的用法

下面是 例子 import pandas as pd import datetime 用來計算日期差的包 def datainterval data1,data2 d1 datetime.datetime.strptime data1,y m d d2 datetime.datetime.strpt...

Python中pandas的qcut函式的用法

在 利用python進行資料分析 這本書的第七章介紹了pandas的qcut函式的用法。原書介紹qcut函式是乙個與分箱密切相關的函式,它基於樣本分位數進行分箱,可以通過qcut獲得等長的箱 data np.random.randn 1000 data服從正態分佈 cats pd.qcut data...