如何在Python中将特定位置的行插入到数据帧中?

2024-05-13 09:29:30 发布

您现在位置:Python中文网/ 问答频道 /正文

假设你有一个数据帧

df = pd.DataFrame({'Name':['Tom', 'Jack', 'Steve', 'Ricky'],'Age': 
[28,34,29,42]})

和另一个数据帧

^{pr2}$

以及一个索引列表

pos = [0,2].

创建一个新的数据帧df2,其中df1在pos中指定的df的索引位置之前集成到df中,最具python风格的方法是什么?在

因此,新数组应该如下所示:

df2 = 
     Age   Name
0    20    Anna
1    28    Tom
2    34    Jack
3    50    Susie
4    29    Steve
5    42    Ricky

非常感谢。在

最好的

内森


Tags: 数据nameposdataframedf列表agesteve
2条回答

使用浮点索引的复杂解决方案:

df = pd.DataFrame({'Name':['Tom', 'Jack', 'Steve', 'Ricky'],'Age': [28,34,29,42]})
df1 = pd.DataFrame({'Name':['Anna', 'Susie'],'Age':[20,50]}, index=[-0.5, 1.5])

result = df.append(df1, ignore_index=False).sort_index().reset_index(drop=True)
print(result)

输出:

^{pr2}$

注意df1创建中的index参数。您可以使用简单的列表理解从pos构造{}:

[x - 0.5 for x in pos]

您要搜索的行为是由numpy.insert实现的,但是,这对于pandas.DataFrame对象来说不太好,但是不管怎样,pandas.DataFrame对象内部都有一个numpy.ndarray(根据各种因素,它可能是多个数组,但是您可以将它们看作是通过.values参数访问的数组)。在

您只需重新构造数据帧的columns,否则,我认为这是最简单、最快的方法:

In [1]: import pandas as pd, numpy as np

In [2]: df = pd.DataFrame({'Name':['Tom', 'Jack', 'Steve', 'Ricky'],'Age':
   ...: [28,34,29,42]})

In [3]: df1 = pd.DataFrame({'Name':['Anna', 'Susie'],'Age':[20,50]})

In [4]: np.insert(df.values, (0,2), df1.values, axis=0)
Out[4]:
array([['Anna', 20],
       ['Tom', 28],
       ['Jack', 34],
       ['Susie', 50],
       ['Steve', 29],
       ['Ricky', 42]], dtype=object)

所以这会返回一个数组,但是这个数组正是你需要的数据帧!还有其他元素,即columns已经存在于原始数据帧上,所以您只需执行以下操作:

^{pr2}$

所以这条线就是你所需要的。在

相关问题 更多 >