【发布时间】:2018-10-20 02:11:20
【问题描述】:
我有两个数据框,df1 和 df2:
import pandas as pd
import datetime
import numpy as np
df1 = pd.DataFrame()
df1["StartDate"] = pd.date_range(start=('2016/01/01'), end = ('2017/12/31'),
freq="6D")
df1["EndDate"] = df1["StartDate"] + datetime.timedelta(5)
df1["Value_three"] = pd.Series(np.random.randn(len(df.Date))+2)
df1 有一个开始日期、结束日期和值(名为 value_three)。 df2 有一个日期,value_one 和 value 2。
df2 = pd.DataFrame()
df2["Date"] = pd.date_range(start=('2016/01/01'), end=('2017/12/31'), freq="D")
df2["Value_one"] = pd.Series(np.random.randn(len(df.Date)))
df2["Value_two"] = pd.Series(np.random.randn(len(df.Date))+1)
我想要实现的是类似于 Excel 中的 SUMIFS 功能:
在这种情况下,我想在 df1 中添加两列,它们分别是 values_1 和 value_2 的总和,其中“日期”列是 df2 在 df1.StartDate 和 df1.EndDate 之间。
假设无法在 Vertica/MSSQL/etc 中预先聚合它。我们也不能使用重新采样,因为开始日期和结束日期可能是不规则的(在这种情况下,间隔 11 天,但间隔可以不断变化)。
我尝试过 join、merge、melt、concat,但我证明失败了!希望有人可以提供帮助。
【问题讨论】:
-
欢迎来到 SO。请在此处查看如何edit 您的问题更清楚:How to make good reproducible pandas examples。例如,不要使用链接或图片;在您的问题中包含数据作为文本。
-
谢谢您,我现在将审查并更新。道歉,认为图像将是最简单的方法:)
-
没问题,主要问题是我们不能将图像复制粘贴到解释器中。所以编写和测试一些代码变得很困难。
标签: python pandas date dataframe merge