如何在pandas DataFrame中的给定位置插入新行,并将索引移位到+1以下

时间:2014-06-03 21:23:34

标签: python pandas

我有一个pandas DataFrame

In [103]: df=pd.DataFrame({'A': [3,4,7,5], 'B': [6,1,3,6]})

In [104]: df
Out[104]: 
   A  B
0  3  6
1  4  1
2  7  3
3  5  6
[4 rows x 2 columns]

如何在索引= 2且移位指数低于+1的位置插入A = 9和B = 9的新行?结果是

In [114]: df
Out[114]: 
   A  B
0  3  6
1  4  1
2  9  9
3  7  3
4  5  6
[5 rows x 2 columns]

2 个答案:

答案 0 :(得分:2)

可能有更有效的方法,但这里有一种方法 - 在你要插入值的点周围取一些头/尾切片,然后将它们与pd.concat一起堆叠。

In[1] pd.concat([df.loc[0:1],  pd.DataFrame({'A':9, 'B':9}, index=[0]), df.loc[2:]], ignore_index=True)

Out[92]: 
   A  B
0  3  6
1  4  1
2  9  9
3  7  3
4  5  6

答案 1 :(得分:1)

我觉得这样很有意思:

df=pd.DataFrame({'A': [3,4,7,5], 'B': [6,1,3,6]})
x = len(df.index)
for item in df.index:
    if x > 2:
        df.ix[x] = df.ix[x-1]
    x = x-1
df.ix[2] = 9