Pandas:合并具有混合数据类型的列

问题描述 投票:0回答:1

我有主数据帧和辅助数据帧。当ID变量组合相同时,我想用辅助数据帧中的值替换主要数据帧中的值。 ID变量之一在主数据帧中具有混合数据类型。我能够解决问题,但我的解决方案似乎过于复杂,我希望这里的某个人可能能够帮助我找到更优雅的方法。

请注意,永远不需要替换ID2 ='缺少'或'indicator'= 1的行。

primary_df = pd.DataFrame(data=
        {'ID1': ['XXX111','XXX111','XXX111','XXX111','YYY222','YYY222','ZZZ333','ZZZ333','ZZZ333'],
         'ID2': ['0-100', -1.0, -2.0, -3.0, '0-10', -1.0,'300-400', 'Missing', '-4.0'],
         'value' : [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9],
         'indicator': [1,np.nan, np.nan, np.nan, 1, np.nan, 1, np.nan, np.nan]})

secondary_df = pd.DataFrame(data=
        {'ID1': list(['XXX111','ZZZ333']),
         'ID2': list([-3,-4]),
         'value': list([0.04, 0.09])})

desired_df = pd.DataFrame(data=
        {'ID1': ['XXX111','XXX111','XXX111','XXX111','YYY222','YYY222','ZZZ333','ZZZ333','ZZZ333'],
         'ID2': ['0-100', -1, -2, -3, '0-10', -1,'300-400', 'Missing', -4],
         'value' : [0.1, 0.2, 0.3, 0.04, 0.5, 0.6, 0.7, 0.8, 0.09],
         'indicator': [1,np.nan, np.nan, np.nan, 1, np.nan, 1, np.nan]})
pandas merge missing-data complex-data-types
1个回答
0
投票

您想要的结果是缺少数据,因此无法打印。很难知道你想要什么。您能否重访并更正。我猜想您需要;(如果您在问题中输入了所需的complete_df,则很高兴进行编辑)

secondary_df['value'] *=10 #Update values

desired_df = (primary_df.set_index(['ID1','ID2'])
          .combine_first(secondary_df.set_index(['ID1','ID2']))
          .reset_index())

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.