python - 如何从python数据框1中获取不匹配的记录,而不是从python中的数据框2中获取不匹配的记录
问题描述
import pandas as pd
df1 = pd.DataFrame({ 'Date':['2013-11-24','2013-11-24','2013-11-24','2013-11-24', '2021-12-21'], 'Fruit':['Banana','Orange','Apple','Celery','hello'], 'Num':[22.1,8.6,7.6,10.2, 3.67], 'Color':['Yellow','Orange','Green','Green', 'red'], })
df2 = pd.DataFrame({ 'Date':['2013-11-24','2013-11-24','2013-11-24','2013-11-24','2013-11-25','2013-11-25'], 'Fruit':['Banana','Orange','Apple','Celery','Apple','Orange'], 'Num':[22.1,8.6,7.6,10.2,22.1,8.6], 'Color':['Yellow','Orange','Green','Green','Red','Orange'], })
下面的代码给出了来自 2 个数据帧的不匹配记录,但我只想要来自一个数据帧的不匹配记录
df = pd.concat([df1, df2])
df = df.reset_index(drop = True)
df_grpby = df.groupby(list(df.columns))
idx = [x[0] for x in df_grpby.groups.values() if len(x) == 1]
df = df.reindex(idx)
print(df)
解决方案
以下是如何使用pandas.DataFrame.apply()
and pandas.DataFrame.isin()
:
import pandas as pd
df1 = pd.DataFrame({'Date': ['2013-11-24', '2013-11-24', '2013-11-24','2013-11-24', '2021-12-21'],
'Fruit': ['Banana', 'Orange', 'Apple', 'Celery', 'hello'],
'Num': [22.1, 8.6, 7.6, 10.2, 3.67],
'Color': ['Yellow', 'Orange', 'Green', 'Green', 'red']})
df2 = pd.DataFrame({'Date': ['2013-11-24', '2013-11-24', '2013-11-24','2013-11-24','2013-11-25','2013-11-25'],
'Fruit': ['Banana', 'Orange', 'Apple', 'Celery', 'Apple', 'Orange'],
'Num': [22.1, 8.6, 7.6, 10.2, 22.1, 8.6],
'Color': ['Yellow', 'Orange', 'Green', 'Green', 'Red', 'Orange']})
print(df1[~df1.apply(tuple, 1).isin(df2.apply(tuple, 1))])
print(df2[~df2.apply(tuple, 1).isin(df1.apply(tuple, 1))])
输出:
Date Fruit Num Color
4 2021-12-21 hello 3.67 red
Date Fruit Num Color
4 2013-11-25 Apple 22.1 Red
5 2013-11-25 Orange 8.6 Orange
推荐阅读
- gwt - UserAgent 将被弃用 - 对 GXT 的影响
- javascript - 安装 c3 以在带有 ES6 导入的 webpack 项目中使用的正确程序是什么?
- google-sheets - Data Studio 中的数据集配置错误
- azure - Spark 不使用 ADLS Gen2 的谓词下推
- reactjs - Javascript(React) Object.keys 和 Object.getOwnPropertyNames 返回空数组
- azure - 使用 ARM 模板创建 SendGrid 帐户失败,法律条款不被接受
- javascript - 由于延迟加载,连接 dataLayer 以进行印象跟踪
- jasper-reports - Excel 中的错误 Jasper Studio 图表大小(“适合单元格大小”而不是“原始大小”)
- mysql - MySQL - 子查询或连接多行
- python - 如何在 Windows 操作系统上使用 Selenium 从网络位置访问 chromdriver 可执行二进制文件而不将其存储在每个主机中