Python 3.x 熊猫基于另一列指定一列的值

Python 3.x 熊猫基于另一列指定一列的值,python-3.x,pandas,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

给定以下数据帧:

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
提前谢谢

使用:

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

在这里,您可以直接在列上使用
方法:

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
[3]中的

df['C']=df['A']。其中(df['B']<3,0)
df
出[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
计时

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
[4]中的

%timeit df['A']。其中(df['B']<3,0)
%timeit np.where(df['B']<3,df['A'],0)
1000个回路,最佳3个:每个回路1.4毫秒
1000个回路,最好为3:407µs/回路

此处速度更快,但pandas
中的pandas
进行了更多的检查,并且有更多的选项,因此这取决于此处的用例。

由您决定,此处的要点是pandas有一个内置的方法添加了计时,
np。此处的
速度更快,但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