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