Python pandas中的条件列合并
我有以下数据集,需要根据以下两个条件,使用id和天数左键将df1与df2连接起来:- 条件1:如果id和天数匹配,则从值列中选择准确值Python pandas中的条件列合并,python,pandas,dataframe,Python,Pandas,Dataframe,我有以下数据集,需要根据以下两个条件,使用id和天数左键将df1与df2连接起来:- 条件1:如果id和天数匹配,则从值列中选择准确值 条件2:如果id匹配,而该id的日期不匹配,则取该id所有天数的平均值 例如:-对于id 34,该值应为3.5(3和4的平均值) df1 df2 尝试: 输出: id Days value 0 12 Sun 1.0 1 34 Mon 3.5 2 56 Tue 6.0 3 78 Wed NaN 尝试: 输出:
条件2:如果id匹配,而该id的日期不匹配,则取该id所有天数的平均值 例如:-对于id 34,该值应为3.5(3和4的平均值) df1 df2 尝试: 输出:
id Days value
0 12 Sun 1.0
1 34 Mon 3.5
2 56 Tue 6.0
3 78 Wed NaN
尝试:
输出:
id Days value
0 12 Sun 1.0
1 34 Mon 3.5
2 56 Tue 6.0
3 78 Wed NaN
id Days value
0 12 Sun 1
1 12 Mon 2
2 34 Fri 3
3 34 Sat 4
4 56 Fri 5
5 56 Tue 6
6 56 Wed 7
# condition 1
out = df1.merge(df2, on=['id','Days'], how='left')
# condition 2
out['value'] = out['value'].fillna(
out['id'].map(df2.groupby('id')['value'].mean())
)
id Days value
0 12 Sun 1.0
1 34 Mon 3.5
2 56 Tue 6.0
3 78 Wed NaN