Python 在两列中逐行创建新的列值
嗨,我正在尝试根据两列中的值组合创建一个新列 我的原始df如下所示Python 在两列中逐行创建新的列值,python,pandas,dataframe,Python,Pandas,Dataframe,嗨,我正在尝试根据两列中的值组合创建一个新列 我的原始df如下所示 | id | code_1 | code_2 | | --- | -------- | ----- | | A0 | 001 | X1 | | A1 | 001 | X2 | | A2 | 001 | x3 | | A3 | 001 | x4 | | A4 | 002 | X1 | | A5 | 002
| id | code_1 | code_2 |
| --- | -------- | ----- |
| A0 | 001 | X1 |
| A1 | 001 | X2 |
| A2 | 001 | x3 |
| A3 | 001 | x4 |
| A4 | 002 | X1 |
| A5 | 002 | X2 |
不管第一列中的id是什么,我只考虑第二列和第三列的组合,即“code_1”和“code_2”
如果'code_1'是001,'code_2'是x1、x2和x3,我想创建新列并给出Y1
如果'code_1'是001,'code_2'是x4,那么我想给出Y2
如果'code_2'是002,'code_2'是x1和x2,那么我想给出Z1
因此,此表的最终输出如下所示:
| id | code_1 | code_2 | new_code |
| --- | -------- | ----- | -------- |
| A0 | 001 | X1 | Y1 |
| A1 | 001 | X2 | Y1 |
| A2 | 001 | x3 | Y1 |
| A3 | 001 | x4 | Y2 |
| A4 | 002 | X1 | Z1 |
| A5 | 002 | X2 | Z1 |
感谢通过和使用链条件进行按位和测试,并由和测试:
回答你的问题了吗?
m1 = df['code_1'].eq('001') & df['code_2'].isin(['x1', 'x2', 'x3'])
m2 = df['code_1'].eq('001') & df['code_2'].eq('x4')
m2 = df['code_1'].eq('002') & df['code_2'].eq(['x1', 'x2'])
df['new_code'] = np.select([m1, m2, m3], ['Y1','Y2','Z1'])