你好,尝试合并两个数据框,并按日期和upc总计访问次数。
- 交易数据(日期、upc、销售额)200k行x 3列
- 访问次数(日期、upc、访问次数)超过200万行x 3列
我已经尝试过这个:
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
0 09/01/2016 A01234 1000
1 09/02/2016 A01234 500
2 09/10/2016 A56789 1200
df2
Date upc visits
0 09/01/2016 A01234 10
1 09/02/2016 A01234 25
2 09/05/2016 A56789 26
3 09/10/2016 A56789 32
df3
Date upc sales visits
0 09/01/2016 A01234 1000 10
1 09/02/2016 A01234 500 25
2 09/10/2016 A56789 1200 32
想知道pandasql包是否是我需要使用的。任何帮助都将不胜感激。
df1.merge(df2, on=['Date', 'upc'])
就可以了,不是吗? - cs95