我正在使用下面的代码对df中的列使用if语句,以产生值
def time_delta(df):
if df['a_time'] > df['b_time']:
res = 'Early'
else:
res = 'Late'
return res
是否有更好或更有效的方式对此进行编码?
基本上,我希望基于两个时间列之间的关系,创建一个值为Early或Late的新列。
谢谢!
答案 0 :(得分:1)
您可以使用以下方法创建新列。
df['new_col'] = 'Late'
df.loc[df['a_time'] > df['b_time'], 'new_col'] = 'Early'
或使用np.where
df['new_col'] = np.where(df['a_time'] > df['b_time'], 'Early', 'Late')
但是,第一种方法是熊猫的方法。
答案 1 :(得分:1)
您可以这样做:
示例
df=pd.DataFrame()
df['value']=0
df['a_time']=[1,2,3]
df['b_time']=[3,0,1]
cond=df['a_time']>df['b_time']
df['value']=df['value'].mask(cond,'Early').mask(~cond,'Late')
输出:
df
value a_time b_time
0 Late 1 3
1 Early 2 0
2 Early 3 1