如何在python数据帧中使用“where”函数在一行中传递一个常量值

时间:2013-12-05 19:59:39

标签: python pandas dataframe

如何在x1和x2之间检查条件后将常量'1'传递给X(如果x1 == x2 =>返回1)

df = pd.DataFrame({'x1': {0: np.nan, 1: 2.0, 2: 4.0, 3: 1, 4: 8.0}, 
                   'x2': {0: 3.0, 1: 2.0, 2: 2.0, 3: 5.0, 4: np.nan}})

     x1 x2
0   NaN  3
1    2   2
2    4   2
3    1   5
4    8  NaN

如果我使用

df['x'] = df['x1'].where((df["x1"]==df["x2"]),0)

    x1  x2  x
0   NaN  3   0
1    2   2   2
2    4   2   0
3    1   5   0
4    8  NaN  0

这里我会得到'x1'的值,其中x1 == x2,但我想传递整数1而不是'x1'我怎么能在这里完成这个?得到下面的结果?

     x1 x2  x
0   NaN  3   0
1    2   2   1
2    4   2   0
3    1   5   0
4    8  NaN  0

1 个答案:

答案 0 :(得分:5)

例如,如下所示;

>>> df['x'] = (df["x1"]==df["x2"]).astype(int)
>>> df
   x1  x2  x
0 NaN   3  0
1   2   2  1
2   4   2  0
3   1   5  0
4   8 NaN  0