2015-09-11 90 views
1

我有兩列,BinaryCol,也就是您可能已經猜到的0和1以及OnsetTime,它的範圍是0到294。使新的一列將包含的OnsetTime值只爲BinaryCol = 1python pandas如果列A中有1,使用同一行中列B的值

我現在有這樣的行:

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

,但它不工作。

回答

4

只是做兩列的產品。

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

您可以使用numpywhere

df['Test'] = np.where(df['BinaryCol'], df['OnsetTime'], np.NaN) 

df['BinaryCol']是條件,df['OnsetTime']是值,如果條件True,並np.NaN值如果條件爲False

1

您需要將功能應用到數據幀,而不是一系列

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