python数据框索引行_python – 在特定索引处的pandas数据框中插入新行

本文介绍如何在Python的Pandas DataFrame中,根据指定的索引位置插入新行。具体问题是,给定一个数据框和一个索引列表,需要在列表中的每个索引处插入一行,新行的某些列值与原始行相同,而其他列值根据现有数据进行计算。提供的代码示例试图实现这一目标,但实际操作中并未插入新行,而是替换了现有行。讨论了这个问题并寻求解决方案。
摘要由CSDN通过智能技术生成

我有一个以下数据框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)索引处的行而不是插入具有上述值的其他行.请帮忙.

如果有任何不清楚的地方,请告诉我.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值