使用 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
我有一个数据框,如果满足特定条件,我想基本上创建该行的副本。 行应该重复 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