Python:将行插入到数据帧中

Python:将行插入到数据帧中,python,pandas,Python,Pandas,有没有一种更像python的方式将行插入到数据帧中?我觉得这应该是熊猫的一个功能,但找不到它。特别是,有没有办法“重置”指数 多谢各位 data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'], 'year': [2000, 2001, 2002, 2001, 2002], 'pop': [1.5, 1.7, 3.6, 2.4, 2.9]} frame = pd.DataFrame(data) new = pd

有没有一种更像python的方式将行插入到数据帧中?我觉得这应该是熊猫的一个功能,但找不到它。特别是,有没有办法“重置”指数

多谢各位

data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'],
    'year': [2000, 2001, 2002, 2001, 2002],
    'pop': [1.5, 1.7, 3.6, 2.4, 2.9]}
frame = pd.DataFrame(data)

new =  pd.DataFrame(np.zeros(len(frame.columns)).reshape(1,len(frame.columns)),columns=frame.columns)
row = 3
def insert_row(frame,new,row):
    top = frame[0:row]
    bottom = frame[row:]
    return pd.concat((top,new,bottom))
但是,运行上述操作将返回:

   pop   state  year
0  1.5    Ohio  2000
1  1.7    Ohio  2001
2  3.6    Ohio  2002
0  0.0       0     0
3  2.4  Nevada  2001
4  2.9  Nevada  2002
使用loc属性分配数据。语法是df.loc[行索引,列索引]。例如:

import pandas
df = pandas.DataFrame(index=list('abcd'), columns=list('ABCD'))
df.loc['a', 'A'] = 1 # re-assigns an existing item
df.loc['b'] = [1, 2, 3, 4] # set the whole row
df.loc['e', 'E'] = 5 # creates a new row and column
df = df.reindex(list('abecd'))
print(df)

     A    B    C    D   E
a    1  NaN  NaN  NaN NaN
b    1    2    3    4 NaN
e  NaN  NaN  NaN  NaN   5
c  NaN  NaN  NaN  NaN NaN
d  NaN  NaN  NaN  NaN NaN

如果您当前的函数运行得足够好,我建议只在返回的结果中添加reset_索引。如下图所示:

    ...:     return pd.concat((top,new,bottom)).reset_index(drop=True)

In [17]: new_frame = insert_row(frame, new, row)

In [18]: new_frame
Out[18]: 
   pop   state  year
0  1.5    Ohio  2000
1  1.7    Ohio  2001
2  3.6    Ohio  2002
3  0.0       0     0
4  2.4  Nevada  2001
5  2.9  Nevada  2002

参数drop=True强制它删除旧索引。将其保留为False将旧索引保留为新的第一列。

DataFrames具有重置索引方法。好了,谢谢你的重置索引选项。这无疑改进了我的代码。仍然希望有一种内置的方法来实现这一点。因此,您的意思是创建一个全新的行,然后将这些行重新索引到您希望插入新行的位置。我喜欢。仍然希望有一个内置的方法在所需的位置插入一行。我理解你关于。loc做什么。我不认为我很清楚我所说的“插入”行是什么意思。我不是指附加一行。我的意思是在某个位置插入一行。所以,如果我想在行“b”和“c”之间插入行“e”,我会首先df.loc['e','e'],然后df.reindex'abecd'.split