创建一个基于其他两个系列的新系列

时间:2019-04-24 02:12:14

标签: python pandas series

我是python的新手。 有一个关于如何从其他两个系列中获得新系列的问题。 例如

a  b 
1  6 
4  7
5  8
8  9

然后,如果a为奇数,则b * 2而a为偶数* 3,之后我们要获得一个新的级数。

c
1 is odd ? 6 * 2 : 6 * 3
4 is odd ? 7 * 2 : 7 * 3
5 is odd ? 8 * 2 : 8 * 3
8 is odd ? 9 * 2 : 9 * 3

========

c
12
21
16
27

2 个答案:

答案 0 :(得分:6)

你好,没有运算符:

df['a'].mod(2).rsub(3).mul(df['b'])

0    12
1    21
2    16
3    27
dtype: int64

您也可以使用np.where来获取被乘数,而不是在表达式内进行乘法。这样,您只需要在末尾乘法一次即可(乘法很昂贵!):

df['b'] * np.where(df['a'] % 2, 2, 3)

0    12
1    21
2    16
3    27
Name: b, dtype: int64

答案 1 :(得分:3)

这就是您需要的np.where%

The % (modulo) operator yields the remainder from the division of the
first argument by the second
np.where(df.a%2,df.b*2,df.b*3)
Out[1115]: array([12, 21, 16, 27], dtype=int64)
df['c']= np.where(df.a%2,df.b*2,df.b*3)

Ummm可能使用二进制的十进制隐蔽

(-df.a.map(bin).str[-1].astype(int)+3)*df.b
Out[1125]: 
0    12
1    21
2    16
3    27
dtype: int64