将较大的pandas数据帧与子集中的特定值合并

时间:2016-04-07 19:51:08

标签: python pandas

我有一个大型的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

我试过看合并,但我不确定如何优雅地做到这一点。

1 个答案:

答案 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