【问题标题】:Fill down between rows in new dataframe column在新数据框列的行之间向下填充
【发布时间】:2023-02-26 03:00:54
【问题描述】:

我有一个数据框,我需要在其中创建一个新列 (Break),并在所有 Break 行之间向前填充该列。

Type,Name
Parent,Parent1
Break,break010
Op,Op1
Unit,Unit1
Item,Item1
Break,break020
Op,Op2
Unit,Unit2
Break,break030
Op,Op3
Unit,Unit3
Parent,Parent2
Break,break010

例如,输出应该是

  Type       Name      Break
Parent    Parent1   
 Break   break010   break010
    Op        Op1   break010
  Unit      Unit1   break010
  Item      Item1   break010
 Break   break020   break020
    Op        Op2   break020
  Unit      Unit2   break020
 Break   break030   break030
    Op        Op3   break030
  Unit      Unit3   break030
Parent    Parent2   
 Break   break010   break010

【问题讨论】:

  • 为什么Parent Parent2 记录没有被break030填满?

标签: python pandas dataframe


【解决方案1】:

您可以使用 DataFrame.where() 替换不是“Break”的值:

df["Break"] = df["Name"].where(df.Type == "Break", pd.NA).ffill().where(df.Type != "Parent", "")

这采用“名称”列,并在“类型”列不是“中断”的情况下返回pd.NA,然后向前填充值,最后将“类型”为“父”的所有列设置为""

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-19
    • 1970-01-01
    • 1970-01-01
    • 2021-03-17
    • 2018-09-14
    • 2022-01-07
    • 2023-02-26
    相关资源
    最近更新 更多