给定某些条件熊猫我可以减去2列

时间:2020-02-20 12:59:04

标签: python pandas dataframe

我有一个看起来像这样的df a

仅当EndTime - StartTime为1000时,我才想减去channel 像这样: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)

但这要慢很多吗?

4 个答案:

答案 0 :(得分:1)

您可以对所有行执行此操作,然后用0替换不符合过滤条件的行:

 df['X channel view time'] = df['EndTime'] - df['StartTime']
 df.loc[df['Channel'] == 1000, 'X channel view time'] = 0

答案 1 :(得分:1)

你还没那么远。语法是:

NameError: name 'add' is not defined

答案 2 :(得分:1)

您可以尝试这样的事情:

Object interfaceLoadedDynamically = Class.forName(i.getName());

答案 3 :(得分: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']

如果“频道”与1000不同,请将[0]*len(df)替换为您想要的内容