python - 使用列组合查找行中的数据不匹配 pandas
问题描述
根据列值的组合获取所有单元格值的最佳方法是什么?
示例数据框一:
Stock Name Price
0 AMD Advanced Micro Devices 100
1 GE General Electric Company 200
2 BAC Bank of America Corporation 300
3 AAPL Apple Inc. 500
4 MSFT Microsoft Corporation 1000
5 GOOGL Alphabet Inc. 2000
示例数据框二:
Stock Name Price
0 AMD Advanced Micro Devices 100
1 GE General Electric Company 200
2 BAC Branch of America Corporation 300
3 AAPL Apple Inc. 500
4 MSFT Microsoft Corporation 1000
5 GOOGL Alphabet Inc. 2000
例如:我想使用 (Stock and Name) 作为键列,然后比较数据集。目标是打印两个数据集之间的不匹配条目,并将 Stock+Name 列用作组合键。
我正在使用熊猫/Python3.7
样本输出:
BAC 美国银行 300 --- BAC 美国分行 300
解决方案
也许,使用merge
+的 FULL INNER JOIN query
?
df1.merge(df2, on='Stock').query('Name_x != Name_y')
Stock Name_x Price_x Name_y Price_y
2 BAC Bank of America Corporation 300 Branch of America Corporation 300
或者,一个稍微不同的解决方案map
,您可以使用它来获取股票代码:
m = df1.Stock.map(df2.set_index('Stock').Name).ne(df1.Name)
symbols = df1.loc[m, 'Stock']
print(symbols)
2 BAC
Name: Stock, dtype: object
然后按股票代码访问每个 DataFrame 行:
df1[df1.Stock.isin(symbols)]
Stock Name Price
2 BAC Bank of America Corporation 300
df2[df2.Stock.isin(symbols)]
Stock Name Price
2 BAC Branch of America Corporation 300
推荐阅读
- r - 两个预测变量 X1 和 X2 之间的散点图
- php - 正则表达式提取两个字符串之间的字符,包括分隔符
- android - 在我的 Android 应用程序中,在 Flurry Ads 中符合 GDPR 的 iabString 的内容是什么?
- ruby-on-rails - Rails:在引文中呈现记录属性的最优雅方式
- reactjs - 仅当 React 属性更改时如何调用函数?
- java - hashCode() 比较返回 true 而 equals() 方法返回 false 的示例?
- javascript - 这是一个唯一的 id 生成器可靠地始终是唯一的吗?
- python - 在这段代码中,在执行 a=A() 和 b=B() 时,在 obj 参数中传递了什么?
- python - 具有关系的 SQLAlchemy 大型插入
- php - 多次上传有时无法成功上传