嗨,我是一个初学者python用户,我需要一些帮助。我试图过滤一个数据与另一个数据。
Df1
date emp# sku transaction#
2017-01-01 10 200 399
2017-01-01 10 201 399
2017-01-01 10 202 399
2017-01-01 11 203 399
2017-01-01 11 200 399 Df2
date emp# sku transaction#
2017-01-01 10 200 301
2017-01-01 11 200 301期望Df1
date emp# sku transaction#
2017-01-01 10 200 399
2017-01-01 11 200 399我知道这可以与内部连接(一个emp#和sku)一起工作,但是我可能会有错误的列,我如何作为一个过滤器来完成这个任务呢?
发布于 2018-03-06 00:37:00
这里有一种没有pd.merge的方法。这种方法的好处是不必使用列名。
df2 = df2.set_index(['emp#', 'sku'])
df2['transaction#'] = df1.set_index(['emp#', 'sku'])['transaction#']
df2 = df2.reset_index()
# emp# sku date transaction#
# 0 10 200 2017-01-01 399
# 1 11 200 2017-01-01 399发布于 2018-03-05 23:37:02
使用merge和on参数:
Df1.merge(Df2, on=['date','emp#','sku'], suffixes=('','_y'))\
.drop('transaction#_y', axis=1)输出:
date emp# sku transaction#
0 2017-01-01 10 200 399
1 2017-01-01 11 200 399发布于 2018-03-05 23:27:13
您需要一个内部联接,它看起来是:保持只位于两个行中的行:
df1.join(df2, how='inner')https://stackoverflow.com/questions/49121089
复制相似问题