我有 2 个数据框,我想根据日期的月份和年份加入它们,而不创建额外的列:
例子 :
df1 :
date_1 value_1
2017-1-15 20
2017-1-31 30
2016-2-15 20
df2:
date_2 value_2
2017-1-1 30
然后得到如下结果,即根据月份和年份合并。
date_1 value_1 value_2
2017-1-15 20 30
2017-1-31 30 30
2016-2-15 20
这是一个基本但有效的解决方案:
res = pd.merge(df1.assign(grouper=df1['date_1'].dt.to_period('M')),
df2.assign(grouper=df2['date_2'].dt.to_period('M')),
how='left', on='grouper')
print(res)
date_1 value_1 grouper date_2 value_2
0 2017-01-15 20 2017-01 2017-01-01 30.0
1 2017-01-31 30 2017-01 2017-01-01 30.0
2 2016-02-15 20 2016-02 NaT NaN
然后您可以删除不需要的列:
res = res[['date_1', 'value_1', 'value_2']]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)