[英]Can i substract 2 column given some conditions pandas
我想減去EndTime - StartTime
僅當channel
是 1000 smth 時才這樣: df.loc[df['Channel'] == 1000]['X channel view time']=df['EndTime']-df['StartTime']
這應該是最快的,但似乎不起作用
def watch_time(row,channel):
val=0
if row['Channel']==channel:
val=row['EndTime']-row['StartTime']
return val
df['BTV_view_time'] = df.apply(watch_time,args=250,axis=1)
但這慢了很多?
您可以對所有行執行此操作,然后用0
替換不適合您的過濾器的行:
df['X channel view time'] = df['EndTime'] - df['StartTime']
df.loc[df['Channel'] == 1000, 'X channel view time'] = 0
你沒有那么遠。 語法是:
df.loc[df['Channel'] == 1000, 'X channel view time']=df.loc[df['Channel'] == 1000, 'EndTime']-df.loc[df['Channel'] == 1000, 'StartTime']
你可以嘗試這樣的事情:
import numpy as np
df['X channel view time'] = np.where(df['channel'] == 1000, df['EndTime'] - df['StartTime'], 0)
請注意,您正在獲取 df 的一部分,這就是它不起作用的原因,您可以執行以下操作:
smaller_df = df[df['Channel'] == 1000]['EndTime']-df[df['Channel'] == 1000]['StartTime']
您還可以創建一個新列:
df['subtraction'] = [0]*len(df)
df['subtraction'] = df[df['Channel'] == 1000]['EndTime']-df[df['Channel'] == 1000]['StartTime']
如果 'Channel' 與 1000 不同,則將[0]*len(df)
替換為您想要的
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.