python - 如何使用列索引比较两个数据框?
问题描述
我正在使用 INSERT OVERWRITE LOCAL DIRECTORY 命令将 hdfs 查询输出导出到 csv 文件中。由于这会导出没有标题的数据。我从 Oracle 输出中获得了另一个带有文件头的数据帧,我需要将其与 hdfs 输出进行比较。
df1 = pd.read_csv('/home/User/hdfs_result.csv', header = None)
print(df1)
0 1 2
0 XPRN A 2019-12-16 00:00:00
1 XPRW I 2019-12-16 00:00:00
2 XPS2 I 2003-09-30 00:00:00
df = pd.read_sql(sqlquery, sqlconn)
UNIT STATUS Date
0 XPRN A 2019-12-16 00:00:00
1 XPRW A 2019-12-16 00:00:00
2 XPS2 I 2003-09-30 00:00:00
由于 df1 没有标题,我不能使用 Merge 或 Join 来比较数据。虽然我可以做 df-df1.
请建议我如何比较和打印差异?
解决方案
您可以传递底层 numpy 数组进行比较:
df2.where(df2==df1.values)
输出(差异被屏蔽为NaN
)
UNIT STATUS Date
0 XPRN A 2019-12-16 00:00:00
1 XPRW NaN 2019-12-16 00:00:00
2 XPS2 I 2003-09-30 00:00:00
对于不匹配的行:
df2[(df2!=df1.values).any(1)]
推荐阅读
- r - 系统地填充可变列
- ibm-watson - 巧合的几率
- html - 我可以使用颜色名称作为图像的替代文本吗?
- excel - 如何在 Excel 中更改日期和时间格式
- adobe-xd - 如何将嵌套组件链接到主组件
- mallet - 在 Windows 上运行 MALLET;找不到或加载主类 cc.mallet.classify.tui.Text2Vectors
- javascript - javascript settimeout 函数的问题
- php - 发生异常flutter
- python - 包含“无”的枚举的 Pythonnet 问题
- kubernetes - 在 Kubernetes 中,是否为每个容器或每个 pod 定义了健康检查?