使用 Python 满足特定条件时的双数据帧值

Double dataframe values when certain condition is met using Python

我有一个数据框,如果满足特定条件,我想基本上创建该行的副本。 行应该重复 IF 'Date' = Q4.22 or > AND type = 'live'

数据

id  Date    set     type    unit    energy
bb  Q4.22   L       live    l01     20
ba  Q4.22   L       non     l01     20
ba  Q3.22   L       non     l01     20
aa  Q4.22   L       non     l01     20
bb  Q4.22   L       live    l01     20
cc  Q3.22   L       non     l01     20
ca  Q3.22   L       live    l01     20

需要

id  Date    set     type    unit    energy
bb  Q4.22   L       live    l01     20
bb  Q4.22   L       live    l01     20
ba  Q4.22   L       non     l01     20
ba  Q3.22   L       non     l01     20
aa  Q4.22   L       non     l01     20
aa  Q4.22   L       live    l01     20
aa  Q4.22   L       live    l01     20
cc  Q3.22   L       non     l01     20
ca  Q3.22   L       live    l01     20

正在做

new = np.arange(len(dupe)).repeat((~dupe.duplicated(keep=False).values) + 1)

我认为这是一个开始,但不确定如何添加条件。 任何建议表示赞赏。

使用所需条件创建数据框的过滤视图并与原始数据框连接:

pd.concat([df, df.loc[(df['Date'] == 'Q4.22') & (df['live'] == 'live')]])

你可以试试concat

pd.concat([df, df[(df['Date']>= "Q4.22") & (df['type'] == 'live')]]).reset_index()
    index   id  Date    set     type    unit    energy
0   0   bb  Q4.22   L   live    l01     20
1   1   ba  Q4.22   L   non     l01     20
2   2   ba  Q3.22   L   non     l01     20
3   3   aa  Q4.22   L   non     l01     20
4   4   aa  Q4.22   L   live    l01     20
5   5   cc  Q3.22   L   non     l01     20
6   6   ca  Q3.22   L   live    l01     20
7   0   bb  Q4.22   L   live    l01     20
8   4   aa  Q4.22   L   live    l01     20