Hello尝试合并两个数据帧并按日期和upc总和访问次数。
我试过这个
df3 = pandas.merge(df1,df2, on = [upc,date], how = left)
结果:合并执行但不按日期或upc总结
我也试过
df3 = pandas.merge(df1,df2, left_on = [date], right_on [upc] how = left)
这不起作用。
df3 = pandas.merge(df1,df2, left_on = [date,upc], right_on [date,upc] how = left)
这不起作用。
我也试过
df3 = pandas.merge(df1,df2, on = [date], how = left)
并且我一直返回错误消息。根据错误消息,我看起来需要将数据框中的一个日期转换为pandas dtype。
我做了那个改变并返回了与我第一次尝试相同的结果。合并有效,但没有总结结果。我尝试将两个数据框中的两个日期都转换为astype(str)
,但这不起作用。我了解到两个日期是否具有相同的日期格式dtype或astype(str)
我返回内存错误消息。合并会失败。
我仅使用upc合并成功,但这会在我的数据中产生问题,我会返回重复的访问号码,因为由于日期列而在事务中重复upc。
我需要的是与excel中的sumif函数类似的东西。
我需要通过汇总每个upc每天的总访问次数并保持事务数据不变或按照sql的方式保持连接来组合这两个数据集
示例数据
df1
Date upc sales
09/01/2016 A01234 1000
09/02/2016 A01234 500
09/10/2016 A56789 1200
df2
Date upc visits
09/01/2016 A01234 10
09/02/2016 A01234 25
09/05/2016 A56789 26
09/10/2016 A56789 32
df3
Date upc sales visits
09/01/2016 A01234 1000 10
09/02/2016 A01234 500 25
09/10/2016 A56789 1200 32
想知道pandasql包是否是我需要使用的。任何帮助表示赞赏
答案 0 :(得分:1)
你执行的第一个合并声明应该让你到达中途,但不幸的是,这是两个步骤的后半部分。听起来您希望在按Date / upc对访问进行汇总后,将销售数据合并到访问数据上。实际上你必须先做一个总和(merge
命令本身不会这样做)。尝试:
df2_sum = df2.groupby(["Date", "upc"])["visits"].sum().reset_index()
然后将其合并到销售数据中:
df3 = pd.merge(df1, df2_sum, on=["Date", "upc"], how="left")