更有效的迭代方法

我想返回与上一列位置相比位置下降的行项目。是否有更好/更简单的方法来做到这一点?我有一个数据帧,其中有按顺序排列的项目,下一个列(周)中的顺序可以更改:

s1 = pd.Series(["item1", "item2", "item3"])
s2 = pd.Series(["item2", "item1", "item3"])
s3 = pd.Series(["item3","item2", "item1"])
data = pd.DataFrame({"week1":s1, "week2":s2, "week3":s3})

# I did it like this

counter1 = 0 # iterate all columns
idxfirst = 0 # manually index
idxsecond = 0 # manually index
numberofcolumns = (len(data.columns))-1

for i in range(numberofcolumns):
    idxfirst = 0
    for i in data.iloc[:,counter1]:
        idxsecond = 0
        for j in data.iloc[:,(counter1+1)]:
            if i == j and idxfirst < idxsecond:
                print(i)
        
            idxsecond += 1
        
        idxfirst +=1
        
    counter1 +=1
prints:
item1 # because position dropped from 1 to 2 in second week
item2 # because position dropped from 1 to 2 in second week
item1 # because position dropped from 2 to 3 in third week
罗伊2012

这是一种通过完全矢量化的方式完成此操作的方法,方法是“融合”数据帧,将其连接到自身,然后寻找满足以下三个条件的行:

  • 第一周的项目与第二周的项目相同。
  • 第1周+ 1 ==第2周
  • 第一项的索引小于第二项的索引。

    df = data.reset_index().melt(id_vars="index")
    df["week"] = df.variable.str.replace("week", "").astype(int)
    df = df[["index", "value", "week"]]
    df = pd.merge(df.assign(dummy = 1), df.assign(dummy=1), on = "dummy") 
    df[(df.value_x == df.value_y) & (df.week_x + 1 == df.week_y) & (df.index_x < df.index_y)]["value_x"]

输出:

4     item1
34    item2
44    item1
Name: value_x, dtype: object

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

扫描屏幕上特定颜色的更有效方法?

来自分类Dev

哪种方法查找重复的整数更有效?

来自分类Dev

有更有效的方法吗?

来自分类Dev

编写jQuery函数的更有效方法

来自分类Dev

更有效的方法,而不是使用重复的if语句

来自分类Dev

解析嵌套列表元素的更有效方法

来自分类Dev

哪个更有效?

来自分类Dev

从服务更新UI的更有效方法?

来自分类Dev

检查鼠标边界的更有效方法

来自分类Dev

比函数引用更有效的方法?

来自分类Dev

使循环更有效

来自分类Dev

距离市中心最近的更有效方法

来自分类Dev

列出组合的更有效方法

来自分类Dev

查找两个可迭代对象共享的匹配值数量的更有效方法?

来自分类Dev

选择功能的更有效方法

来自分类Dev

有没有更有效的方法来重构Ruby上哈希的迭代?

来自分类Dev

比{{}}更有效的在模板中调用Angular方法的方法?

来自分类Dev

制作JButton的更有效方法

来自分类Dev

Django注释-更有效的方法?

来自分类Dev

更有效的循环

来自分类Dev

使循环更有效

来自分类Dev

创建阵列的更有效方法

来自分类Dev

列出组合的更有效方法

来自分类Dev

迭代groupby Pandas数据框的更有效方法?

来自分类Dev

迭代熊猫中行的有效方法

来自分类Dev

在重复迭代期间更有效的改组

来自分类Dev

迭代多个列表/字典的更有效方法?

来自分类Dev

复制代码的更有效方法

来自分类Dev

什么是迭代嵌套对象集合的更干净或更有效的方法