【问题标题】:How to iterate backwards through dataframe until it meets specified condition, then continue iterating with new value?如何通过数据框向后迭代直到满足指定条件,然后继续迭代新值?
【发布时间】:2023-01-31 17:50:30
【问题描述】:

我有一个名为“元素”的熊猫数据框列。它的值要么有长度为 9 的数字,要么有长度为 7 的数字。 dataframe 的第一行总是有 9 个数字,最后一行总是有 7。

例子:

{element:[120000000, 8000000, 120003000, 7000000, 120003333, 120003444, 5000000]

我想创建另一个名为“已分配”的列。该列必须分配值,从数据框的后方开始,从“元素”列中获取 7 个数值,直到它满足 9 个数值。然后使用它之前最后一次使用的 7 数值并转到新行开始使用下一个 7 数值。

这是一个例子:

{element:[120000000, 8000000, 120003000, 7000000, 120003333, 120003444, 5000000]}
{assigned:[8000000, 8000000, 7000000, 7000000, 5000000, 5000000, 5000000]}

老实说,我被卡住了,不知道该怎么做。

【问题讨论】:

    标签: pandas dataframe


    【解决方案1】:

    使用 Series.where 将大于 100000000 的值替换为缺失值,然后回填下一个值,最后转换为整数:

    df['assigned'] = df['element'].where(df['element'].lt(100000000)).bfill().astype(int)
    print (df)
         element  assigned
    0  120000000   8000000
    1    8000000   8000000
    2  120003000   7000000
    3    7000000   7000000
    4  120003333   5000000
    5  120003444   5000000
    6    5000000   5000000
    

    【讨论】:

      猜你喜欢
      • 2021-11-26
      • 1970-01-01
      • 1970-01-01
      • 2021-09-10
      • 2020-10-06
      • 2020-06-16
      • 1970-01-01
      • 2018-03-16
      • 1970-01-01
      相关资源
      最近更新 更多