【发布时间】:2021-04-11 11:19:03
【问题描述】:
我愿意比较两个数据集:
第一:
| Partner | Type | Power | Price |
|---|---|---|---|
| Partner1 | Buy | 1 | 15.975 |
| Partner1 | Buy | 1 | 18.025 |
| Partner1 | Buy | 1 | 18.025 |
| Partner1 | Buy | 1 | 18.025 |
| Partner1 | Buy | 1 | 18.025 |
| Partner1 | Sell | 1000 | 43.5 |
第二:
| Partner | Type | Power | Price |
|---|---|---|---|
| Partner1 | Buy | 1 | 15.975 |
| Partner1 | Buy | 1 | 18.025 |
| Partner1 | Buy | 1 | 18.025 |
| Partner1 | Buy | 1 | 18.025 |
| Partner1 | Buy | 1 | 18.025 |
| Partner1 | Buy | 1 | 18.025 |
| Partner1 | Buy | 2 | 18.025 |
| Partner1 | Sell | 5 | 19.05 |
| Partner1 | Sell | 5 | 19.06 |
| Partner1 | Sell | 5 | 19.125 |
| Partner1 | Buy | 2 | 19.2 |
我的目标是检查第二个表中的哪些行不存在于第一个表中,基于列“类型”、“价格”和“功率”的相等值。
compcol = ['Type','Power','Price']
missing = second[~second[compcol].isin(first[compcol].to_dict(
orient='list')).all(axis=1)]
上面的代码确实返回了第一个表中缺少的行:
| Partner | Type | Power | Price |
|---|---|---|---|
| Partner1 | Buy | 2 | 18.025 |
| Partner1 | Sell | 5 | 19.05 |
| Partner1 | Sell | 5 | 19.06 |
| Partner1 | Sell | 5 | 19.125 |
| Partner1 | Buy | 2 | 19.2 |
我想要实现的是增加一行“Partner1 - BUY - 1 - 18.025”,这在第一个表中也缺少(第二个表包含 5 条具有相同数据的交易记录,而第一个表只包含4!)。
我怎样才能做到这一点?
感谢您的回答。
【问题讨论】:
-
您能否通过使用类似
df = pd.DataFrame({'Partner': [...], 'Type': [...]}的代码 sn-p 给出两个输入数据帧的可重现示例?你也应该喜欢merge方法的熊猫文档:pandas.pydata.org/docs/reference/api/…
标签: python pandas compare multiple-columns