df1 = pd.DataFrame({'Name': ['A0', 'A1', 'A2', 'A3', 'A4'],
'Buy': [True, True, False, False, False],
'Sell': [False, False, True, False, True]
index=[0, 1, 2, 3, 4])
Name Buy Sell
0 A0 True False
1 A1 True False
2 A2 False True
3 A3 False False
4 A4 False True
我想在一个条件下合并买入和卖出列,如果 "买入 "为真值,则为 "买方",如果 "卖出 "为真值,则为 "卖方",如果 "买入 "和 "卖出 "都为假值,则为 "非"。
sample required output
Name Type
0 A0 Buyer
1 A1 Buyer
2 A2 Seller
3 A3 NA
4 A4 Seller
2 个回答
0 人赞同
np.select
a = np.select([df1.Buy, df1.Sell], ['Buyer', 'Seller'], 'NA')
pd.DataFrame({'Name': df1.Name, 'Type': a})
Name Type
0 A0 Buyer
1 A1 Buyer
2 A2 Seller
3 A3 NA
4 A4 Seller
df1.assign(Type=np.select([df1.Buy, df1.Sell], ['Buyer', 'Seller'], 'NA'))
Name Buy Sell Type
0 A0 True False Buyer
1 A1 True False Buyer
2 A2 False True Seller
3 A3 False False NA
4 A4 False True Seller
0 人赞同
你可以这样做。
s = df[['Buy','Sell']]
df['Type'] = (s@s.columns).add('er').replace('er', np.nan)
# df['Type'] = np.where(s.any(1), s.idxmax(1).add('er'), np.nan)
Output:
Name Buy Sell Type
0 A0 True False Buyer