当前位置: 首页 > 知识库问答 >
问题:

有没有更快的方法来做这个循环?

夹谷和韵
2023-03-14

我想使用以下循环创建一个新列。表中只有“open”和“start”列。我想创建一个新列“startopen”,如果“start”等于1,那么“startopen”等于“open”。否则,“startopen”等于此新创建列上方行中的任何“startopen”。目前,我能够通过以下方式实现这一点:

for i in range(df.shape[0]):
    if df['start'].iloc[i] == 1:
        df.loc[df.index[i],'startopen'] = df.loc[df.index[i],'open']
    else:
        df.loc[df.index[i],'startopen'] = df.loc[df.index[i-1],'startopen']

这有效,但对于大型数据集来说非常慢。是否有任何内置函数可以更快地完成此操作?

共有1个答案

蓟俊杰
2023-03-14

我想创建一个新列“startopen”,其中如果“start”等于1,则“startopen”等于“open”

否则,“startopen”等于此新创建列上方行中的任何“startopen”。

IIUC,否则部分等于用最后等于1的< code>startopen向前填充非1的< code>startopen

df['startopen'] = pd.Series(np.where(df['start'].eq(1), df['open'], np.nan), index=df.index).ffill()
 类似资料:
  • 除了把它们全部输入外,还有没有更好的方法在字符串中列出它们?

  • 由于没有快速的lambda计算器,我使用上面的策略将非类型化lambda演算的术语编译为Haskell,以便快速计算它们。我对它的性能印象深刻:该程序创建了一个从到的数字列表,并在我的计算机上在不到一秒钟的时间内将它们相加。这比我预期的要快得多--只比Haskell直接等价物慢4倍--并且足以对我的目标有用。但是,请注意,为了满足类型系统的需要,我必须将函数和术语包装在fun/num构造函数下面。

  • 本文向大家介绍数组有没有length()这个方法? String有没有length()这个方法?相关面试题,主要包含被问及数组有没有length()这个方法? String有没有length()这个方法?时的应答技巧和注意事项,需要的朋友参考一下 答:数组没有length()这个方法,有length的属性。String有有length()这个方法。  

  • 除了把它们全部输入外,还有没有更好的方法在字符串中列出它们?

  • 我有一个javascript函数,它接受一个数组,并对该数组的每个项执行另一个函数。有很多重复的部分,所以我假设有一种更简单的递归方式来写这个: null null 数组中的每个项要么是字符串,要么是嵌套数组。字符串不必是唯一的,所以我认为我不能使用object和map()来代替。

  • 我正在创建一个JSP. tag文件来处理这个用例: 其中,行为将是获取请求参数,转义其值以“安全”使用,并将转义值放回某个作用域(例如请求),与参数同名(尽管它可能是另一个名称)。 我有一个可以工作的实现,但我有scriptlet,因为我找不到在JSTL中使用变量名的方法。但我不是JSTL向导,所以我想看看我是否缺少语法/方法。这是正在工作的文件: (我真希望艾尔能自动逃脱。)