我想检查在任何dataframe
行上,给定数量的列是否有一组值(不同列有不同的值集),并相应地分配一个boolean
值-我想我可能需要apply()
和any()
的组合,但并不完全符合:
所以,对于数据帧:
bank_dict = {'Name' : ['A', 'B', 'C', 'D', 'E'],
'Type' : ['Retail', 'Corporate', 'Corporate', 'Wholesale', 'Retail'],
'Overdraft': ['Y', 'Y', 'Y', 'N', 'N'],
'Forex': ['USD', 'GBP', 'EUR', 'JPY', 'GBP']}
有真相清单:
truth_list = [bank_df['Type'].isin(['Retail']), bank_df['Overdraft'].isin(['Yes']), bank_df['Forex'].isin(['USD', 'GBP'])]
生成的df应如下所示:
Name Type Overdraft Forex TruthCol
0 A Retail Y USD 1
1 B Corporate Y GBP 1
2 C Corporate Y EUR 1
3 D Wholesale N JPY 0
4 E Retail N GBP 1
谢谢,
最佳答案
我认为需要:
bank_df['TruthCol'] = np.logical_or.reduce(truth_list).astype(int)
print (bank_df)
Name Type Overdraft Forex TruthCol
0 A Retail Y USD 1
1 B Corporate Y GBP 1
2 C Corporate Y EUR 1
3 D Wholesale N JPY 0
4 E Retail N GBP 1