繁体   English   中英

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

[英]New column value based on two timestamp columns in df

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

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

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

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

谢谢!

您可以使用以下方法创建新列。

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')

但是,第一种方法是使用熊猫的方法。

你可以做:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM