Python 熊猫使用日期和另一列在两列上合并
您好,正在尝试合并两个数据帧,并按日期和upc求访问次数之和Python 熊猫使用日期和另一列在两列上合并,python,pandas,pandasql,Python,Pandas,Pandasql,您好,正在尝试合并两个数据帧,并按日期和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
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, on = ['date'], how = 'left')
但那没用
df3 = pandas.merge(df1,df2, left_on = ['date','upc'], right_on ['date','upc'] how = 'left')
但那没用
我也试过了
df3 = pandas.merge(df1,df2, left_on = ['date'], right_on ['upc'] how = 'left')
df3 = pandas.merge(df1,df2, on = ['date'], how = 'left')
我不断地返回一条错误消息。根据错误消息,看起来我需要将数据帧中的一个日期转换为数据类型
我做了更改,并返回了与第一次尝试相同的结果。合并成功了,但没有总结结果。我尝试将两个数据帧中的两个日期都转换为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包。感谢您提供的任何帮助您执行的第一个合并语句应该可以让您完成一半,但不幸的是,这是两步过程的后半部分。听起来您希望在按日期/upc对访问进行求和后,将销售数据合并到访问数据中。实际上,您必须先进行求和(
merge
命令本身并不这样做)。尝试:
然后左键将其合并到销售数据中:
df3 = pd.merge(df1, df2_sum, on=["Date", "upc"], how="left")
一个简单的
df1.merge(df2,on=['Date','upc'])
可以工作,不是吗?访问数据已经汇总。这是一个来自大查询的qry,每天和每次访问的upc的输出访问计数。groupby如何更改格式?Hi PaSTE我尝试了第二种方法,脚本运行了,但输出没有成功。“访问”列合并,但该列为空。没有值。所以我使用pandasql找到了一个解决方案。使用GROUPBY子句组合数据和求和值是有效的。为了添加更多注释,问题在于日期。不是百分之百确定原因,但当您将两个dfs的两个日期都转换为panda date time,然后使用pandasql时,合并将起作用,访问的值将汇总。唯一需要注意的是输出,合并表后,日期字段显示00:00:00的日期和时间戳。Excel很容易将其转换为日期。我只是想记下这一点,看看是否有人知道如何操纵日期,以便以简单的日期格式输出,即2016年2月9日