如何在日期列上加入两个数据帧,其频率相同且不同,如下例所示。
方案1
-d postgres
相同频率,方案2
fast = pd.DataFrame({
'date': pd.to_datetime(['2018-01', '2018-02', '2018-03',
'2018-04', '2018-05', '2018-06']),
'store': ['A'] * 3 + ['B'] * 3,
'sales': [3000, 2000, 1800, 1700, 1500, 1600]})
slow = pd.DataFrame({
'date': pd.to_datetime(['2018-01', '2018-03', '2018-06']),
'temp': [45, 55, 70]})
alligned_left_fast = ?
alligned_left_slow = ?
不同频率,方案3
unaligned_df1 = pd.DataFrame({
'date': pd.to_datetime(['2018-01', '2018-02', '2018-03',
'2018-04', '2018-05', '2018-06']),
'store': ['A'] * 3 + ['B'] * 3,
'sales': [3000, 2000, 1800, 1700, 1500, 1600]})
unaligned_df2 = pd.DataFrame({
'date': pd.to_datetime(['2018-02-11', periods=6, freq='30D']),
'temp': [105, 95, 87]})
Unaligned_merged_left_date_index=?
答案 0 :(得分:0)
您可以将pd.merge_asof
与direction
参数一起使用。
pd.merge_asof(fast,slow, on='date', direction='backward')
输出:
date store sales temp
0 2018-01-01 A 3000 45
1 2018-02-01 A 2000 45
2 2018-03-01 A 1800 55
3 2018-04-01 B 1700 55
4 2018-05-01 B 1500 55
5 2018-06-01 B 1600 70