我使用這個函式就是用來清洗資料,刪選過濾掉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...