python pandas如果在A列中为1,则在同一行中使用B列的值

时间:2015-09-11 18:02:55

标签: python pandas lambda dataframe

我有两列,BinaryCol,正如您可能已经猜到的那样,0和1,以及OnsetTime,范围从0到294.我想创建一个新列,其中包含OnsetTime的值仅适用于BinaryCol = 1

的行

我目前有这个:

df['Test'] = df['BinaryCol'].apply(lambda row: ['OnsetTime'] if row['BinaryCol'] > 0 else 0, axis=1)

但它没有用。

3 个答案:

答案 0 :(得分:4)

只做两列产品。

df['Test'] = df['OnsetTime'] * df['BinaryCol']

答案 1 :(得分:1)

您可以使用numpy的{​​{1}}:

where

df['Test'] = np.where(df['BinaryCol'], df['OnsetTime'], np.NaN) 是条件,df['BinaryCol']是条件为df['OnsetTime']时的值,True条件为np.NaN时的值。

答案 2 :(得分:1)

您需要将您的功能应用于数据框,而不是系列

    df['Test'] = df.apply(lambda row: (row['OnsetTime'] if row['BinaryCol'] == 1 else 0), axis = 1)