首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于datetime的数据仓库内部连接

基于datetime的数据仓库内部连接
EN

Stack Overflow用户
提问于 2016-11-29 15:28:53
回答 1查看 673关注 0票数 2

我有两个数据格式: df1和df2。

代码语言:javascript
复制
df1.index
DatetimeIndex(['2001-09-06', '2002-08-04', '2000-01-22', '2000-12-19',
               '2008-02-09', '2010-07-07', '2011-06-04', '2007-03-14',
               '2003-05-17', '2016-02-27',..dtype='datetime64[ns]', name=u'DateTime', length=6131, freq=None)

df2.index
DatetimeIndex(['2002-01-01 01:00:00', '2002-01-01 10:00:00',
               '2002-01-01 11:00:00', '2002-01-01 12:00:00',
               '2002-01-01 13:00:00', '2002-01-01 14:00:00',..dtype='datetime64[ns]', length=129273, freq=None)

也就是说,df1的索引是天,df2的索引是日期时间。我想在索引上执行df1和df2的内部连接,如果df2中的小时对应的日期在df1中可用,那么我们认为内部联接为真,否则为false。

我想获得两个df11和df22作为输出。df11将有来自df1的通用日期和相应的列。df22将有来自df2的通用日期小时和相应的列。

例如,df1中的“2002-08-04”和df2中的“2002-08-04:00”被认为都存在。

但是,如果df1中的'1802-08-04‘在df2中没有一个小时,那么它就不在df11中。

但是,如果df2中的‘2045-08-04-01:00:00’在df1中没有日期,则在df22中不存在。

现在,我正在使用numpy in1dpandas normalize函数来长时间地完成这项任务。我在寻找实现这一目标的必经之路。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-29 16:04:45

假设构造了一个虚拟DF,如下所示:

代码语言:javascript
复制
idx1 = pd.date_range(start='2000/1/1', periods=100, freq='12D')
idx2 = pd.date_range(start='2000/1/1', periods=100, freq='300H')
np.random.seed([42, 314])

DF只包含DateTimeIndex作为date属性:

代码语言:javascript
复制
df1 = pd.DataFrame(np.random.randint(0,10,(100,2)), idx1)
df1.head()

DF包含DateTimeIndex作为date + time属性:

代码语言:javascript
复制
df2 = pd.DataFrame(np.random.randint(0,10,(100,2)), idx2)
df2.head()

求出仅以匹配日期作为判别参数的通用指标。

代码语言:javascript
复制
intersect = pd.Index(df2.index.date).intersection(df1.index)

第一个公共索引DF包含其原始数据的列:

代码语言:javascript
复制
df11 = df1.loc[intersect]
df11

第二个公共索引DF包含其原始数据的列:

代码语言:javascript
复制
df22 = df2.iloc[np.where(df2.index.date.reshape(-1,1) == intersect.values)[0]]
df22

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40869633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档