基于df中两个时间戳列的新列值

时间:2019-09-04 18:34:06

标签: python python-3.x pandas data-science

我正在使用下面的代码对df中的列使用if语句,以产生值

def time_delta(df):
    if df['a_time'] > df['b_time']:
        res = 'Early'
    else:
        res = 'Late'
    return res

是否有更好或更有效的方式对此进行编码?

基本上,我希望基于两个时间列之间的关系,创建一个值为Early或Late的新列。

谢谢!

2 个答案:

答案 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