如何避免在添加列时创建这么多变量?我有一些需要满足的条件,每一个新的陈述都会把不符合条件的旧信息洗掉。那么,我该如何保留旧的价值并加入新的价值呢?在
获取此数据帧
import pandas as pd
import datetime as DT
d = {'case' : pd.Series([1,1,1,1,2]),
'open' : pd.Series([DT.datetime(2014, 3, 2), DT.datetime(2014, 3, 2),DT.datetime(2014, 3, 2),DT.datetime(2014, 3, 2),DT.datetime(2014, 3, 2)]),
'change' : pd.Series([DT.datetime(2014, 3, 8), DT.datetime(2014, 4, 8),DT.datetime(2014, 5, 8),DT.datetime(2014, 6, 8),DT.datetime(2014, 6, 8)]),
'StartEvent' : pd.Series(['Homeless','Homeless','Homeless','Homeless','Jail']),
'ChangeEvent' : pd.Series(['Homeless','Jail','Homeless','Jail','Jail']),
'close' : pd.Series([DT.datetime(2015, 3, 2), DT.datetime(2015, 3, 2),DT.datetime(2015, 3, 2),DT.datetime(2015, 3, 2),DT.datetime(2015, 3, 2)])}
df=pd.DataFrame(d)
这给了我一部分我需要的信息。在
^{pr2}$理想情况下,我可以采取下一部分,让它降落在相同的变量'无家可归'监狱',但无论我尝试删除当前的条件不满足
df['homeless2']=(df['homeless']+(df['change']-df['open'])/np.timedelta64(1,'D'))[(df['ChangeEvent']=='Homeless') & (df['first']==1)]
例如,下一行将在不满足条件的地方输出。我如何保留旧的价值,并加入新的价值。在
#df['homeless2']=(df['homeless']+(df['change']-df['open'])/np.timedelta64(1,'D'))[(df['ChangeEvent']=='Homeless') & (df['first']==1)]
df['jail2']=(df['jail']+(df['change']-df['open'])/np.timedelta64(1,'D'))[(df['ChangeEvent']=='Jail') & (df['first']==1)]
df.homeless2=df.homeless2.fillna(0)
df.jail2=df.jail2.fillna(0)
df['homeless3']=(df['homeless']+(df['close']-df['change'])/np.timedelta64(1,'D'))[(df['ChangeEvent']=='Homeless') & (df['last']==1)]
df['jail3']=(df['jail']+(df['close']-df['change'])/np.timedelta64(1,'D'))[(df['ChangeEvent']=='Jail') & (df['last']==1)]
df.homeless3=df.homeless3.fillna(0)
df.jail3=df.jail3.fillna(0)
df['realjail']=df.jail+df.jail2+df.jail3
df['realhomeless']=df.homeless+df.homeless2+df.homeless3
这是可行的,但远没有效率。谢谢您。在
你正在做的事情的第一部分;稍微清理干净
您不必创建这是新列,但IMHO有点干净
^{pr2}$这是它告诉loc要设置哪些行的键
仅对指定的行掩码和列进行对齐
相关问题 更多 >
编程相关推荐