有条件地将1或0设置为新的Pandas列

Spi*_*uce 6 python pandas

一个非常简单的熊猫问题:

如果我有这样的数据帧:

   hour
 0  0
 1  1
 2  1
 3  2
 4  2
  ...
Run Code Online (Sandbox Code Playgroud)

我想创建一个新的"午餐"栏目,如果11 <=小时<= 1则值为1,否则,最好和计算最快的方法是什么?

Col*_*vel 7

你可以使用矢量化方法(减运算符在这里取消布尔掩码):

df['lunch'] = (-df.hour.isin(range(2,11))).astype(int)

Out[368]:
   hour  lunch
0     0      1
1     1      1
2     1      1
3     2      0
4     2      0
Run Code Online (Sandbox Code Playgroud)


Zer*_*ero 5

你可以

In [231]: df['lunch'] = (df['hour']<=11) & (df['hour']<=1)

In [232]: df['lunch']
Out[232]:
0     True
1     True
2     True
3    False
4    False
Name: lunch, dtype: bool

In [233]: df['lunch'].astype(int)
Out[233]:
0    1
1    1
2    1
3    0
4    0
Name: lunch, dtype: int32
Run Code Online (Sandbox Code Playgroud)