条件匹配时添加一行?

时间:2019-04-06 09:17:49

标签: python pandas

我想在条件匹配时添加一行并在所有列中填充值。下面的代码可以正常工作,但是由于数据帧非常庞大,因此需要花费大量时间。可以优化吗?

for i in range(len(df)):
    if df['counter'][i]==1:
        df.loc[len(df)]=[df['user_id'][i],df['start_time'][i]-datetime.timedelta(seconds=1),'psuedo_App_start',np.nan,0,np.nan,0]

1 个答案:

答案 0 :(得分:1)

您可以使用DataFrame.assign来按dictionary更改过滤行,然后将concat更改为原始DataFrame.sort_index,最后使用DataFrame.reset_index作为默认唯一索引:< / p>

d = {'event_name':'psuedo_App_start',
     'event_desc': np.nan,
     'Notification_process':0,
     'current_screen':np.nan,
     'counter': 0}

df1 = df[df['counter'] == 1].assign(**d).copy()

#if necessary subtract one second
#df1['start_time'] -= datetime.timedelta(seconds=1)
df = pd.concat([df1, df]).sort_index().reset_index(drop=True)