簡體   English   中英

在某些條件下,我可以減去 2 列熊貓嗎

[英]Can i substract 2 column given some conditions pandas

我有一個看起來像這樣的 df 一種

我想減去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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM