我有一个数据框,我想对每一行检查哪些条件是成立的。如果多个条件同时成立,我希望使用np.select返回所有这些选择的结果。我该怎样实现这个需求呢?
我创建了一个示例数据框:
import pandas as pd
import numpy as np
df = pd.DataFrame({
'cond1': [True, True, False, True],
'cond2': [False, False, True, True],
'cond3': [True, False, False, True],
'value': [1, 3, 3, 6]
})
然后,我定义了一系列条件:
conditions = [
df['cond1'] & (df['value']>4),
df['cond2'],
df['cond2'] & (df['value']>2),
df['cond3'] & df['cond2']
]
以及对应的选项:
choices = ['1', '2', '3', '4']
当我尝试使用np.select为数据框新增一列"class"来表示满足的条件时:
df["class"] = np.select(conditions, choices, default=np.nan)
我得到的结果如下:
cond1 cond2 cond3 value class
0 True False True 1 NaN
1 True False False 3 NaN
2 False True False 3 2
3 True True True 6 1
但实际上,我期望的结果是这样的,当一个行满足多个条件时,在"class"列显示所有满足条件的编号,用"和"连接:
cond1 cond2 cond3 value class
0 True False True 1 NaN
1 True False False 3 NaN
2 False True False 3 2 and 3
3 True True True 6 1 and 2 and 3 and 4
请问我应该如何修改代码以达到预期的效果?