首页 > 解决方案 > Python数据框导入匹配列和索引数据

问题描述

我有一个主数据框和辅助数据框。两者都具有相同的时间戳索引和列,而 master 列的列数较少。我想将某个列的数据从辅助复制到主控。

我的代码:

maindf = pd.DataFrame({'A':[0.0,NaN],'B':[10,20],'C':[100,200],},index=pd.date_range(start='2020-05-04 08:00:00', freq='1h', periods=2))
auxdf= pd.DataFrame({'A':[1,2],'B':[30,40],},index=pd.date_range(start='2020-05-04 08:00:00', freq='1h', periods=2))

maindf = 
                       A   B    C
2020-05-04 08:00:00  0.0  10  100
2020-05-04 09:00:00  NaN  20  200

auxdf = 
                     A   B
2020-05-04 08:00:00  1  30
2020-05-04 09:00:00  2  40

预期答案:我想在 auxdf 中获取 A 列数据并通过匹配索引复制到 maindf。

maindf = 
                     A   B    C
2020-05-04 08:00:00  1  10  100
2020-05-04 09:00:00  2  20  200

我的解决方案:

maindf['A'] = auxdf['A']

我的解决方案不正确,因为我直接复制值而不检查匹配索引。我该如何解决?

标签: pythonpandasdataframe

解决方案


您可以使用.update(),如下所示:

maindf['A'].update(auxdf['A'])

.update()使用传递的系列中的非 NA 值进行更新。在索引上对齐。

另请注意,原始 dtype ofmaindf['A']被保留:float即使auxdf['A']是type 时也保持为inttype。

结果:

print(maindf)

                       A   B    C
2020-05-04 08:00:00  1.0  10  100
2020-05-04 09:00:00  2.0  20  200

推荐阅读