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

时间:2018-08-08 19:46:44

标签: python pandas dataframe

假设您有一个数据框

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

和另一个数据框

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

以及带有索引的列表

pos = [0,2].

在pos中指定的df的索引位置之前,将df1集成到df的新数据帧df2的最有效方法是什么?

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

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

非常感谢您。

最好

内森

2 个答案:

答案 0 :(得分:1)

具有浮点索引的棘手解决方案:

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)

输出

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

在创建index时注意df1参数。您可以使用简单的列表理解从index来构建pos

[x - 0.5 for x in pos]

答案 1 :(得分:0)

您要搜索的行为是由numpy.insert实现的,但是,这对于pandas.DataFrame对象来说效果不佳,但是没有问题的pandas.DataFrame对象具有{{1 }}内(根据各种因素的不同,可能是多个数组,但您可以将它们视为可以通过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

因此您只需要一行即可。