Python 带条件规则的数据帧

Python 带条件规则的数据帧,python,pandas,dataframe,Python,Pandas,Dataframe,我有以下数据框 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" d

我有以下数据框

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"
仅当ID列已经具有除“-”以外的值时,才会在ID1中填充“规则2”


我正在努力寻找在ID1列中应用规则2的最有效方法,首先测试ID是否填充了值。

我认为您可以使用
(按位和)链接新条件,不要忘记
()

或:


我想知道如何将其扩展到n个规则?
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