2017-07-22 37 views
1

我有以下數據幀熊貓數據幀具有條件規則

import pandas as pd 
df= pd.DataFrame({'Name':['Tam','John','Tom','Mark','Tim'],'Surname':['Jones','James','James','Perez','Desouza'],'ID':['-','-','-','-','-'],'ID1':['-','-','-','-','-']}) 

df.loc[df.Name.str.startswith('T'),'ID']="Rule 1" 
df.loc[df.Surname.str.startswith('J'),'ID1']="Rule 2" 

「規則2」被填充在ID1只有當ID列已經具有比以外的值「 - 」。

通過首先測試ID是否填充了值,我正努力應用ID1列中的規則2的最有效方法。

回答

1

我認爲你可以鏈&(按位與)新的條件,不要忘記爲()

df.loc[df.Name.str.startswith('T'),'ID']="Rule 1" 
df.loc[df.Surname.str.startswith('J') & (df.ID != '-'),'ID1']="Rule 2" 
print (df) 
     ID  ID1 Name Surname 
0 Rule 1 Rule 2 Tam Jones 
1  -  - John James 
2 Rule 1 Rule 2 Tom James 
3  -  - Mark Perez 
4 Rule 1  - Tim Desouza 

或者:

df.loc[df.Name.str.startswith('T'),'ID']="Rule 1" 
df.loc[df.Surname.str.startswith('J') & df.Name.str.startswith('T'),'ID1']="Rule 2" 
print (df) 
     ID  ID1 Name Surname 
0 Rule 1 Rule 2 Tam Jones 
1  -  - John James 
2 Rule 1 Rule 2 Tom James 
3  -  - Mark Perez 
4 Rule 1  - Tim Desouza 
+0

我不知道我會如何擴展到n個規則? –