我想将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中的值取自其目标位置的相应索引。我有办法避免这种情况吗?
答案 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]])