Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x Python If Int介于两个值之间,结果不正确_Python 3.x_Pandas - Fatal编程技术网

Python 3.x Python If Int介于两个值之间,结果不正确

Python 3.x Python If Int介于两个值之间,结果不正确,python-3.x,pandas,Python 3.x,Pandas,我有一个熊猫数据框,如下所示 df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar','foo', 'bar', 'foo', 'foo'], 'seconds' : [21,200,300,400,500,600,700,800]}) I am trying to create buckets based on minutes as below, def create_bucket(seconds

我有一个熊猫数据框,如下所示

df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar','foo', 'bar', 'foo', 'foo'],
                      'seconds' : [21,200,300,400,500,600,700,800]})

I am trying to create buckets based on minutes as below,

def create_bucket(seconds):
    #row['seconds'], buckets- 5,10,15,20,25,30,>30
    if [(seconds >= 0) & (seconds <= 300)]:
        result = "5"
    elif [(seconds >= 301) & (seconds <= 600)]:
        result = "10"
    elif [(seconds >= 601) & (seconds <= 900)]:
        result = "15"
    elif [(seconds >= 901) & (seconds <= 1200)]:
        result = "20"
    elif [(seconds >= 1201) & (seconds <= 1500)]:
        result = "25"
    elif [(seconds >= 1501) & (seconds <= 1800)]:
        result = "30"
    else:
        result = ">30"
    return result

df['Bucket'] = df.apply(lambda row: create_bucket(df['seconds']), axis=1)

if
条件句周围不应该有方括号。当你把它们放在那里,而不是
True
False
,你最终得到的列表是:
[True]
[False]
,两者的计算结果都是
True
,因为非空列表总是真实的。另外,
是按位AND,但您需要逻辑AND,因此请改用

提示:如果[False]:打印(“测试”),请尝试运行
。如果[False]或[True]条件提供相同的结果,则替换第一次检查-打印测试。数据类型为int32秒,因此似乎不是类型不匹配。很难理解。唉,你不明白这个暗示,所以我会发布一个详细的解释。再次感谢约瑟夫。我最初是这样做的,但我得到了下面的错误,对不起。我收到的错误是,ValueError:(“序列的真值不明确。请使用a.empty、a.bool()、a.item()、a.any()或a.all().,“发生在索引0处”)我早些时候收到了这个错误,为了解决post()中提到的这个错误,我添加了位括号和方括号,正如您所指出的那样,这导致了逻辑问题。试图找出最好的方法来让这个逻辑继续下去。
A   seconds Bucket
0   foo 21  5
1   bar 200 5
2   foo 300 5
3   bar 400 5
4   foo 500 5
5   bar 600 5
6   foo 700 5
7   foo 800 5