Pandas:将数据帧插入到其他数据帧中而不保留索引

时间:2018-03-07 20:49:08

标签: python pandas dataframe

我想将pandas数据帧插入到某些索引的另一个pandas数据帧中。

让我们说我们有这个数据框:

original_df = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]])

   0  1  2
0  1  2  3
1  4  5  6
2  7  8  9

然后,我可以更改某些索引的值,如下所示:

original_df = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]])
original_df.iloc[[0,2],[0,1]] = 2

   0  1  2
0  2  2  3
1  4  5  6
2  2  2  9

但是,如果我使用相同的技术插入另一个数据帧,则它不起作用:

original_df = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]])
df_to_insert = pd.DataFrame([[10,11],[12,13]])
original_df.iloc[[0,2],[0,1]] = df_to_insert

      0     1    2
0  10.0  11.0  3.0
1   4.0   5.0  6.0
2   NaN   NaN  9.0

我正在寻找获得以下结果的方法:

   0  1  2
0  10 11  3
1  4  5  6
2  12 13  9

在我看来,根据我使用的语法,df_to_insert中的值取自其目标位置的相应索引。我有办法避免这种情况吗?

2 个答案:

答案 0 :(得分:3)

当你插入时确保将df更改为值,pandas是索引敏感的,这意味着它将始终尝试在计算期间与索引和列匹配

original_df.iloc[[0,2],[0,1]] = df_to_insert.values
original_df
Out[651]: 
    0   1  2
0  10  11  3
1   4   5  6
2  12  13  9

答案 1 :(得分:1)

它适用于数组而不是df:

original_df.iloc[[0,2],[0,1]] = np.array([[10,11],[12,13]])