我有两列,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)
但它没有用。
答案 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)