【发布时间】:2021-06-23 16:00:44
【问题描述】:
我有两个 df,我需要根据 df 的日、月和年合并成一个新的 df,其中日、月和年的最短记录。换句话说,如果“日”、“月”和“年”列在比较中不匹配,那么我需要删除这些行或不匹配。具有最长记录或日、月、年行的 df 是“ncm” df,如下所示:
ncm.head()
Out[358]:
plant_name month year power_kwh
0 ALBUREJOS 1 2018 2634.583602
1 ALBUREJOS 1 2019 1947.384812
2 ALBUREJOS 1 2020 1787.296640
3 ALBUREJOS 2 2018 1539.008929
4 ALBUREJOS 2 2019 4948.003274
并且,我需要与一些缺失数据和较短日期(日、月和年)合并的第二个 df 是 df "dfm",如下所示:
dfm.head()
Out[359]:
plant_name month year power_obs_kwh
0 ALBUREJOS 1 2018 2631.353970
1 ALBUREJOS 1 2019 1931.685916
2 ALBUREJOS 1 2020 1750.192298
3 ALBUREJOS 1 2021 314.000000
4 ALBUREJOS 2 2018 1537.588323
我已经尝试过多次重复下面这样的事情,并遇到了这里也显示的错误。
new_df = dfm.merge(ncm, left_on=['month','year'], right_on = ['power_kwh'], how='left')
错误信息:
ValueError: len(right_on) must equal len(left_on)
感谢您的洞察力。
【问题讨论】:
标签: python pandas merge multiple-columns missing-data