根据条件用另一个数据帧中的数据充实一个数据帧

2024-09-24 02:17:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一些帮助来做一些复杂的查找和充实。我需要在python3.5中工作

这是一个场景。我有两个数据帧:dfMaster和dfLookup

dfMaster有fromDate、toDate、fromLocation、toLocation和LookupKey列 (此数据帧每天将获得额外的行) dfMaster中的数据有两行:

2018年5月1日,2018年5月3日,阿姆斯特丹,鹿特丹,南部

2018年5月2日,2018年5月5日,鹿特丹,阿姆斯特丹,南部

dfLookup有lookupDate、lookupFromLocation、lookuplocation和someKey列 (这是一个相当静态的数据帧) dfLookup中的数据有两行:

2018年5月3日,鹿特丹,阿姆斯特丹,Key1

2018年5月5日,鹿特丹,阿姆斯特丹,Key1

我想在dfMaster上进行以下匹配:

  • 我想挑dfLookup.lookupDate检查一下 dfMaster.fromDate以及dfMaster.toDate在
  • 接下来,我要检查lookupFromLocation与fromLocation匹配
  • 最后,我要检查lookuplocation是否与location匹配

如果所有这些都匹配,我想选择dfLookup.Key1把它放进dfMaster.LookupKey在

最终输出应如下所示: 2018年5月1日,2018年5月3日,阿姆斯特丹,鹿特丹,南部

2018年5月2日,2018年5月5日,鹿特丹,阿姆斯特丹,Key1

找不到一个简单的方法来做这件事。我还希望最终输出不仅被我充实的内容过滤,而且还被那些未被充实的行过滤

谢谢


Tags: 数据场景静态key1fromdatetodatesomekeydfmaster
1条回答
网友
1楼 · 发布于 2024-09-24 02:17:09

数据清理

import pandas as pd
from pandas import Timestamp
from numpy import nan
import numpy as np

# Data cleaning
dfLookup = pd.DataFrame({'lookupDate': {0: Timestamp('2018-03-05 00:00:00'),
  1: Timestamp('2018-05-05 00:00:00')},
 'lookupFromLocation': {0: 'Rotterdam', 1: 'Rotterdam'},
 'lookupToLocation': {0: 'Amsterdam', 1: 'Amsterdam'},
 'someKey': {0: 'Key1', 1: 'Key1'}}
)

dfMaster = pd.DataFrame({'fromDate': {0: Timestamp('2018-01-05 00:00:00'),
  1: Timestamp('2018-02-05 00:00:00')},
 'toDate': {0: Timestamp('2018-05-03 00:00:00'),
  1: Timestamp('2018-05-05 00:00:00')},
 'fromLocation': {0: 'Amsterdam', 1: 'Rotterdam'},
 'toLocation': {0: 'Rotterdam', 1: 'Amsterdam'},
 'LookupKey': {0: nan, 1: nan}}
)

# More data cleaning
dfLookup.lookupDate = pd.to_datetime(dfLookup.lookupDate)
dfMaster.fromDate = pd.to_datetime(dfMaster.fromDate)
dfMaster.toDate = pd.to_datetime(dfMaster.toDate)

pd.merge在两个数据帧中使用city列

^{pr2}$

相关问题 更多 >