我有两个数据框,例如-
identity time Date matched_time
0 197_$ 21:21:21 9/11/2015 21:21:30
0 197_$ 21:21:51 9/11/2015 21:22:00
0 197_$ 21:22:21 9/11/2015 21:22:30
0 197_$ 21:22:51 9/11/2015 21:23:00
0 197_$ 21:23:21 9/11/2015 21:23:30
0 197_$ 21:23:51 9/11/2015 21:24:00
identity Line Epoch Day Seconds Date Time
197_$ 9344 11203 4 280290 9/11/2015 1/1/1900 21:21
197_$ 9345 11204 4 280320 9/11/2015 1/1/1900 21:22
197_$ 9346 11205 4 280350 9/11/2015 1/1/1900 21:22
197_$ 9347 11206 4 280380 9/11/2015 1/1/1900 21:23
197_$ 9348 11207 4 280410 9/11/2015 1/1/1900 21:23
197_$ 9349 11208 4 280440 9/11/2015 1/1/1900 21:24
现在,我想合并这些列以创建一个新的数据框- 我做到了-
df2=pd.merge(df,out,how='outer')
但是没有获得所需的输出。我只是想创建一个包含所有列的数据框。
因此数据框应如下所示-
identity time Date matched_time Line Epoch ....
0 197_$ 21:21:21 9/11/2015 21:21:30 9344 11203 ....
0 197_$ 21:21:51 9/11/2015 21:22:00 9345 11204
0 197_$ 21:22:21 9/11/2015 21:22:30 9346 11205
0 197_$ 21:22:51 9/11/2015 21:23:00 9347 11206
0 197_$ 21:23:21 9/11/2015 21:23:30 9348 11207
0 197_$ 21:23:51 9/11/2015 21:24:00 9349 11208
答案 0 :(得分:1)
通常,除非您至少在一侧(左侧或右侧)具有唯一键,否则不应使用merge()
。而是使用concat()
如果两个数据框中的列相同。为简单起见,我省略了第二个数据帧的列Time
。
df1
:
identity time Date matched_time
0 197_$ 21:21:21 9/11/2015 21:21:30
1 197_$ 21:21:51 9/11/2015 21:22:00
2 197_$ 21:22:21 9/11/2015 21:22:30
3 197_$ 21:22:51 9/11/2015 21:23:00
4 197_$ 21:23:21 9/11/2015 21:23:30
5 197_$ 21:23:51 9/11/2015 21:24:00
df2
:
identityLine Epoch Day Seconds Date
0 197_$ 9344 11203 4 280290 9/11/2015
1 197_$ 9345 11204 4 280320 9/11/2015
2 197_$ 9346 11205 4 280350 9/11/2015
3 197_$ 9347 11206 4 280380 9/11/2015
4 197_$ 9348 11207 4 280410 9/11/2015
5 197_$ 9349 11208 4 280440 9/11/2015
使用concat()
组合2个数据帧:
df3 = (pd.concat([df1.set_index(['identity', 'Date']),
df2.set_index(['identity', 'Date'])],
axis=1).reset_index(drop=False))
输出(df3
):
identity Date time matched_time Line Epoch Day Seconds
0 197_$ 9/11/2015 21:21:21 21:21:30 9344 11203 4 280290
1 197_$ 9/11/2015 21:21:51 21:22:00 9345 11204 4 280320
2 197_$ 9/11/2015 21:22:21 21:22:30 9346 11205 4 280350
3 197_$ 9/11/2015 21:22:51 21:23:00 9347 11206 4 280380
4 197_$ 9/11/2015 21:23:21 21:23:30 9348 11207 4 280410
5 197_$ 9/11/2015 21:23:51 21:24:00 9349 11208 4 280440
希望这会有所帮助。