我的数据框如下所示
D1 P2open D2 P2high D3 P2low D4 P2close
1/2/1997 1259 1/2/1997 1263 1/3/1997 1247 1/2/1997 1250
1/3/1997 1252 1/4/1997 1260 1/5/1997 1252 1/3/1997 1257
1/6/1997 1254 1/6/1997 1271 1/6/1997 1254 1/5/1997 1270
1/7/1997 1270 1/8/1997 1289 1/7/1997 1270 1/7/1997 1285
1/8/1997 1280 1/9/1997 1294 1/8/1997 1280 1/8/1997 1289
1/9/1997 1285 1/10/1997 1290 1/9/1997 1285 1/10/1997 1287
我只知道如何以这种方式合并,但我不知道如何扩展它以合并所有这些,你能告诉我吗?
df = df[['D9', 'P3close']].merge(df[['D4', 'P2close']], how='left', left_on='D9', right_on='D4')
想要的结果
D1 P2open P2high P2low P2close
1/2/1997 1259 1263 nan 1250
1/3/1997 1252 nan 1247 1257
1/6/1997 1254 1271 1254 nan
1/7/1997 1270 nan 1270 1285
1/8/1997 1280 1289 1280 1289
1/9/1997 1285 1294 1285 nan
他们都使用D1来合并
答案 0 :(得分:0)
你可以把它们连在一起,虽然它很难看。如果有可能,您可以考虑以不同的方式存储数据。
df[['D1', 'P2open']].set_index('D1').merge(df[['D2', 'P2high']].set_index('D2'), how='left', left_index=True, right_index=True)\
.merge(df[['D3', 'P2low']].set_index('D3'), how='left', left_index=True, right_index=True)\
.merge(df[['D4', 'P2close']].set_index('D4'), how='left', left_index=True, right_index=True)
P2open P2high P2low P2close
D1
1/2/1997 1259 1263.0 NaN 1250.0
1/3/1997 1252 NaN 1247.0 1257.0
1/6/1997 1254 1271.0 1254.0 NaN
1/7/1997 1270 NaN 1270.0 1285.0
1/8/1997 1280 1289.0 1280.0 1289.0
1/9/1997 1285 1294.0 1285.0 NaN