我有两个具有完全相同索引的数据框:
the first one:
0 1 2
2 0.011765 0.490196 0.015686
2 0.011765 0.490196 0.015686
2 0.007843 0.494118 0.007843
2 0.007843 0.494118 0.007843
2 0.007843 0.501961 0.011765
.. ... ... ...
0 0.000000 0.031373 0.039216
0 0.031373 0.082353 0.105882
0 0.094118 0.149020 0.192157
0 0.094118 0.156863 0.215686
[337962 rows x 3 columns]
和第二个:
0 1 2
0 0.055852 0.118138 0.052386
1 0.453661 0.665857 0.441551
2 0.096394 0.635641 0.068524
3 0.952545 0.827438 0.047632
4 0.787729 0.823494 0.795792
5 0.050284 0.549379 0.592593
6 0.608805 0.215458 0.068293
7 0.775640 0.091352 0.689224
第一个DF非常庞大。我需要尽可能快地用小DF中具有相同索引的值替换巨大DF中的值。 怎么样? 谢谢你的帮助。
答案 0 :(得分:3)
使用第二个数据帧的索引对第一个数据帧进行切片然后分配。
df1.loc[df2.index] = df2
答案 1 :(得分:1)
您可以通过索引将merge
空数据框df1
与df2
一起使用:
print pd.merge(df1[[]], df2, left_index=True, right_index=True)
0 1 2
0 0.055852 0.118138 0.052386
0 0.055852 0.118138 0.052386
0 0.055852 0.118138 0.052386
0 0.055852 0.118138 0.052386
2 0.096394 0.635641 0.068524
2 0.096394 0.635641 0.068524
2 0.096394 0.635641 0.068524
2 0.096394 0.635641 0.068524
2 0.096394 0.635641 0.068524
或join
:
print df1[[]].join(df2)
0 1 2
0 0.055852 0.118138 0.052386
0 0.055852 0.118138 0.052386
0 0.055852 0.118138 0.052386
0 0.055852 0.118138 0.052386
2 0.096394 0.635641 0.068524
2 0.096394 0.635641 0.068524
2 0.096394 0.635641 0.068524
2 0.096394 0.635641 0.068524
2 0.096394 0.635641 0.068524
如果您需要保留索引顺序,请使用reset_index
merge
,index
列,然后set_index
:
df = pd.merge(df1[[]].reset_index(), df2.reset_index(), on='index').set_index('index')
df.index.name = None
print df
0 1 2
2 0.096394 0.635641 0.068524
2 0.096394 0.635641 0.068524
2 0.096394 0.635641 0.068524
2 0.096394 0.635641 0.068524
2 0.096394 0.635641 0.068524
0 0.055852 0.118138 0.052386
0 0.055852 0.118138 0.052386
0 0.055852 0.118138 0.052386
0 0.055852 0.118138 0.052386