- 我有一个两个数据来源。一个是旧数据,另一个是同一数据的当前版本李>
- 我需要在这两个数据中找到
new
和updated
以及deleted
行李> - 下面是一个例子
Updated
在某种意义上,任何列的值都是从旧数据更改而来的李>
>>> import pandas as pd
>>> import numpy as np
>>> df1 = pd.DataFrame({'id':[1,2,3,4],'b':[4,np.nan,6,12]})
>>> df2 = pd.DataFrame({'id':[2,1,3,5],'b':[np.nan,40,6,6]})
>>> df1
id b
0 1 4.0
1 2 NaN
2 3 6.0
3 4 12.0
>>> df2
id b
0 2 NaN
1 1 40.0
2 3 6.0
3 5 6.0
- 这里id是表的主键李>
- 我可以通过比较主键很容易地找到新行李>
>>> df2[~df2.id.isin(df1.id)]
id b
3 5 6.0
- 但在新数据源中查找更新的行时遇到问题李>
- 我试着跟着
>>>tmp = df1.merge(df2)
>>> df2[(~df2.id.isin(tmp.id)) & (df2.id.isin(df1.id))]
id b
1 1 40.0
- 这适用于特定情况。但是,当我将同样的东西应用到我的原始数据帧时(shape
(97000,58)
和两个列组合在一起形成一个PK),并没有得到期望的结果。它给出了未更新的行李> - 我的问题是‘这是实现这一目标的正确方法吗?’李>
- 我该如何改进李>
Tags:
获取id的交集并使用
==
进行简单比较。这只可能是因为您有相同的标记数据帧(即相同的索引-由于交集-和相同的列)它给出了一个布尔数据帧,在值相等的地方有
True
个值,在值不同的地方有False
个值相关问题 更多 >
编程相关推荐