一个非常简单的熊猫问题:
如果我有这样的数据框:
hour
0 0
1 1
2 1
3 2
4 2
...
我想创建一个新的'午餐'列,如果11< = hour< = 1则值为1,否则,最好和计算最快的方法是什么?
答案 0 :(得分: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
答案 1 :(得分: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
答案 2 :(得分:3)
尝试:
>>> df['lunch']=df['hour'].apply(lambda x: 1 if x >= 11 or x <= 1 else 0)
>>> df
hour lunch
0 0 1
1 1 1
2 1 1
3 2 0
4 2 0