Python:根据其他两列中的值有条件地创建新列

时间:2020-07-17 09:51:58

标签: python pandas numpy dataframe

我想将两列合并为一个新列。

假设我有:

Index A B
0     1 0
1     1 0
2     1 0
3     1 0
4     1 0
5     1 2
6     1 2
7     1 2
8     1 2
9     1 2
10    1 2

现在,我想创建一个列C,其中A的条目从索引0到4,B列的索引从5到10。它应该像这样:

Index A B C
0     1 0 1
1     1 0 1
2     1 0 1
3     1 0 1
4     1 0 1
5     1 2 2
6     1 2 2
7     1 2 2
8     1 2 2
9     1 2 2
10    1 2 2

是否有python代码如何获取此代码?预先感谢!

2 个答案:

答案 0 :(得分:5)

如果Index是实际列,则可以使用numpy.where并指定条件

import numpy as np

df['C'] = np.where(df['Index'] <= 4, df['A'], df['B'])

    Index  A  B  C
0       0  1  0  1
1       1  1  0  1
2       2  1  0  1
3       3  1  0  1
4       4  1  0  1
5       5  1  2  2
6       6  1  2  2
7       7  1  2  2
8       8  1  2  2
9       9  1  2  2
10     10  1  2  2

答案 1 :(得分:1)

如果您的索引是您的实际索引

您可以使用iloc切片索引,并使用concat创建列。

df['C']  = pd.concat([df['A'].iloc[:5], df['B'].iloc[5:]])


print(df)

    A  B  C
0   1  0  1
1   1  0  1
2   1  0  1
3   1  0  1
4   1  0  1
5   1  2  2
6   1  2  2
7   1  2  2
8   1  2  2
9   1  2  2
10  1  2  2