我正在嘗試在資料幀上應用兩個否定條件的 AND,結果很奇怪:
import pandas as pd
df = pd.DataFrame([{'name':'John', 'gneder':None, 'gneder1':None, 'gneder2':'M3'},{'name':'Jack', 'gneder':'Unclassified', 'gneder1':'M2', 'gneder2':None},{'name':'Jessy', 'gneder':None, 'gneder1':'F2', 'gneder2':None}])
df
src_col = 'gneder'
target_col = 'GENDER'
df[target_col] = ""
df.loc[ df[src_col] != 'Unclassified' ]
name gneder gneder1 gneder2 GENDER
0 John None None M3
2 Jessy None F2 None
df.loc[ ~df[src_col].isnull()]
name gneder gneder1 gneder2 GENDER
1 Jack Unclassified M2 None
df.loc[ ((~df[src_col].isnull()) & df[src_col] != 'Unclassified')]
name gneder gneder1 gneder2 GENDER
0 John None None M3
1 Jack Unclassified M2 None
2 Jessy None F2 None
我期待最終過濾器不回傳任何記錄,但它回傳所有記錄
uj5u.com熱心網友回復:
有括號不匹配 - 第一個被洗掉,因為沒有像這樣的運營商比較==, !=, >...
,第二個條件被添加,因為操作的優先級:
df = df.loc[ ~df[src_col].isnull() & (df[src_col] != 'Unclassified')]
#df = df.loc[ df[src_col].notna() & (df[src_col] != 'Unclassified')]
print (df)
Empty DataFrame
Columns: [name, gneder, gneder1, gneder2, GENDER]
Index: []
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/533410.html
標籤:熊猫
上一篇:將浮點數和物件的資料幀更改為二進制資料幀,同時保留列和行標題的字串值
下一篇:重命名資料框中的列