use*_*101 2 python merge date dataframe pandas
我有2个数据框,我希望在没有创建额外列的情况下,根据月份和年份加入它们:
例如:
df1:
date_1 value_1
2017-1-15 20
2017-1-31 30
2016-2-15 20
Run Code Online (Sandbox Code Playgroud)
DF2:
date_2 value_2
2017-1-1 30
Run Code Online (Sandbox Code Playgroud)
然后得到如下结果,即以月和年为基础合并.
date_1 value_1 value_2
2017-1-15 20 30
2017-1-31 30 30
2016-2-15 20
Run Code Online (Sandbox Code Playgroud)
这是一个基本但有效的解决方案:
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
Run Code Online (Sandbox Code Playgroud)
然后,您可以删除不需要的列:
res = res[['date_1', 'value_1', 'value_2']]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
915 次 |
最近记录: |