Pandas根据另一列分配一列的值

时间:2016-01-28 18:01:46

标签: python-3.x pandas

给出以下数据框:

import pandas as pd
df = pd.DataFrame(
        {'A':[10,20,30,40,50,60],
         'B':[1,2,1,4,5,4]
        })
df

    A   B
0   10  1
1   20  2
2   30  1
3   40  4
4   50  5
5   60  4

我想要一个新专栏' C'使价值等于' A'其中' B'的对应值小于3其他0。 期望的结果如下:

    A   B  C
0   10  1  10
1   20  2  20
2   30  1  30
3   40  4  0
4   50  5  0
5   60  4  0

提前致谢!

2 个答案:

答案 0 :(得分:3)

使用np.where

df['C'] = np.where(df['B'] < 3, df['A'], 0)

>>> df
    A  B   C
0  10  1  10
1  20  2  20
2  30  1  30
3  40  4   0
4  50  5   0
5  60  4   0

答案 1 :(得分:3)

您可以在此处直接使用((ButtonMatch) view).getPlayer1() 方法where

pandas

<强>计时

In [3]:
df['C'] = df['A'].where(df['B'] < 3,0)
df

Out[3]:
    A  B   C
0  10  1  10
1  20  2  20
2  30  1  30
3  40  4   0
4  50  5   0
5  60  4   0

np.where在这里速度更快,但是pandas In [4]: %timeit df['A'].where(df['B'] < 3,0) %timeit np.where(df['B'] < 3, df['A'], 0) 1000 loops, best of 3: 1.4 ms per loop 1000 loops, best of 3: 407 µs per loop 正在进行更多检查,并且有更多选项,因此这取决于此处的用例。