我想合并2个数据帧并同时返回矩阵和填充。 我的两个数据框是
AR = {"Supplier": ["A","A","A","B",],
"Currency": ["AUD","AUD","USD","AUD"],
"Day": [1,3,1,1],
"Amount": [510,530,610,710]}
AR = pd.DataFrame(AR)
IntTable = {"Currency": ["AUD","AUD","AUD","USD","USD","USD"],
"Day": [1,2,3,1,2,3],
"InterestRate": [11,12,13,21,22,23]}
IntTable = pd.DataFrame(IntTable)
我尝试过
Table = pd.merge_ordered(IntTable, AR, on=['Currency','Day'],
how= 'outer', fill_method='ffill', left_by=['Day'])
我得到的结果:
我想要的结果
答案 0 :(得分:1)
这是实现您想要的方式。我首先创建结果的骨架:
df = pd.merge(AR[["Supplier", "Currency"]].drop_duplicates().assign(dummy=1),
IntTable[["Day"]].drop_duplicates().assign(dummy=1), on = "dummy").drop("dummy", axis=1)
df = pd.merge_ordered(df, IntTable, on = ["Day", "Currency"])
df = df.sort_values(["Supplier", "Currency"])
df = pd.merge_ordered(df, AR, on = ["Supplier", "Currency", "Day"], fill_method='ffill')
print(df)
输出为:
Supplier Currency Day InterestRate Amount
0 A AUD 1 11 510
1 A AUD 2 12 510
2 A AUD 3 13 530
3 A USD 1 21 610
4 A USD 2 22 610
5 A USD 3 23 610
6 B AUD 1 11 710
7 B AUD 2 12 710
8 B AUD 3 13 710