python - 合并熊猫数据框时得到错误的结果
问题描述
我有两个数据框,例如-
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
解决方案
一般来说,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
使用 2 个数据框组合concat()
:
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
希望这可以帮助..
推荐阅读
- visual-studio-code - VSCode 自动格式化,无需换行
- python - 将每一行乘以不同的旋转矩阵
- hibernate - 休眠依赖项,找不到扫描仪类
- python - 在 python 使用 *args 的类中传递和访问参数
- android - 有没有办法将 UnityPlayerActivity 用作 AppcompatActivity?
- node.js - 在数小时内禁用 App Engine 实例/服务器以降低成本
- java - 从 ATM 取款
- laravel - 使用输入重定向回上一页
- angular - 创建托管角度小部件时的角度完全封装
- java - 避免在循环中执行数据库查询