【问题标题】:Python increment loop to add filter parameters to dataframePython增量循环将过滤器参数添加到数据框
【发布时间】:2016-08-04 01:06:09
【问题描述】:

我创建了一个包含一组函数的字典。然后,我创建了一个尝试使用这些函数的 while 循环。但是循环的一部分并没有按照我想要的方式调用函数。代码如下:

while bool(str(w).endswith(' 2')) != True:
    a = re.search('[0-9]{1,2}$', str(w))
    w = w & int(a.group())-1
    result = df[f[w]]

第三行,w = w & int(a.group())-1,当我在这个循环之外测试它时,它没有按我想要的方式运行。我尝试设置w = 34,然后测试我设置34 & int(a.group())-1 时的结果。我没有给我34 & 33,而是得到32。有没有办法创建一个将参数添加到结果中的增量,而不是创建一些似乎在逻辑上没有派生的整数?我希望它以 34 开头,然后在循环中添加一个减一的整数(3434 & 3334 & 33 & 32 等)。提前致谢!

【问题讨论】:

  • 请提供更多信息:int(a.group()) 返回什么值?
  • 从 w = 34 开始,int(a.group())-1 返回 33。

标签: python loops dataframe while-loop


【解决方案1】:

34 & 33 32& 是按位与运算符。

说你想要 "34 & 33" 表明你想要一个 string 作为结果,但这似乎与在整个代码中使用 str(w) 冲突。或者你可能只是不清楚& 做了什么,并且真的想要一些不同的操作。

【讨论】:

    【解决方案2】:

    好的,我想通了。我需要 q = f[w] 然后 q = q & f[w-n],其中 f[w] 定义了基于列过滤数据帧 (df) 的参数,而 f[w-n] 定义了基于过滤的不同参数在下一个相邻的列上。所以,级数应该是 f[w], f[w] & f[w-n], f[w] & f[w-n] & f[w-n] 等,而不是 34, 34 & 33, 34 & 33 & 32 等,而 n

    所以看起来像这样:

    w = 34
    n = 1
    q = f[w]
    while n <= w:
        q = q & f[w-n]
        result = df[q]
        n = n+1
    

    而且,以后会有条件来决定是否使用了足够的参数。在我的使用中,我不是在最初定义 q 之后的 while 循环之前寻找结果,因为该结果已经在程序的不同部分中找到。 (以防这对其他人有帮助。)

    Scott Hunter 感谢关于 & 运算符的提示。

    【讨论】:

      猜你喜欢
      • 2021-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-02
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 2013-05-14
      相关资源
      最近更新 更多