我有一个大型的pandas DataFrame和一个DataFrame的单独子集,其值已经过计算。我想将子集DataFrame的值合并回较大的值而不更改任何其他值。
df_large:
index col_1 col_2 col_3
1 10 15 33
2 23 16 nan
3 33 92 34
4 132 123 nan
5 32 59 nan
还有一个子集:
df_small:
index col_1 col_2 col_3
2 23 16 34
4 132 123 87
我希望生成的DataFrame用df_small.col_3中的值覆盖df_large.col_3中的值,只有df_small中存在特定索引的位置:
df_large:
index col_1 col_2 col_3
1 10 15 33
2 23 16 34
3 33 92 34
4 132 123 87
5 32 59 nan
我试过看合并,但我不确定如何优雅地做到这一点。
答案 0 :(得分:2)
一种方式(多种方式):
df_large.ix[df_small.index, 'col_3'] = df_small.col_3
与combine_first()
相比,它似乎更快
In [408]: %timeit df = df_large.combine_first(df_small)
100 loops, best of 3: 6.45 ms per loop
In [409]: %timeit df_large.ix[df_small.index, 'col_3'] = df_small.col_3
100 loops, best of 3: 2.43 ms per loop