我有一个以下数据框df,其中包含两列“identifier”,“values”和“subid”:
identifier values subid
0 1 101 1
1 1 102 1
2 1 103 2 #index in list x
3 1 104 2
4 1 105 2
5 2 106 3
6 2 107 3
7 2 108 3
8 2 109 4 #index in list x
9 2 110 4
10 3 111 5
11 3 112 5
12 3 113 6 #index in list x
比方说,我有一份指数清单
x = [2, 8, 12]
我想在列表x中提到的索引之前插入行.例如,对于在索引2之前插入的行将具有以下值,它将具有与索引2处的行相同的标识符,即1;与索引2处的行相同的值,即103;但是新行中的subid将是((在索引2处为subid)-1),或者只是前一行中的subid,即1.
以下是我期望的最终结果:
identifier values subid
0 1 101 1
1 1 102 1
2 1 103 1 #new row inserted
3 1 103 2 #index in list x
4 1 104 2
5 1 105 2
6 2 106 3
7 2 107 3
8 2 108 3
9 2 109 3 #new row inserted
10 2 109 4 #index in list x
11 2 110 4
12 3 111 5
13 3 112 5
14 3 113 5 #new row inserted
15 3 113 6 #index in list x
我一直在尝试的代码:
m = df.index #storing the indices of the df
#m
for i in m:
if i in x: #x is the given list of indices
df.iloc[i-1]["identifier"] = df.iloc[i]["identifier"]
df.iloc[i-1]["values"] = df.iloc[i]["values"]
df.iloc[i-1]["subid"] = (df.iloc[i]["subid"]-1)
df
上面的代码只是替换(i-1)索引处的行而不是插入具有上述值的其他行.请帮忙.
如果有任何不清楚的地方,请告诉我.