gpt4 book ai didi

python - Pandas 使用日期和另一列合并两列

转载 作者:行者123 更新时间:2023-12-05 03:07:17 24 4
gpt4 key购买 nike

您好,尝试合并两个数据框并按日期和 upc 求和访问次数。

  1. 交易数据(日期、upc、销售额)20 万行 x 3 列
  2. 访问次数(日期、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表示left join

示例数据

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 命令本身不会这样做)。尝试:

df2_sum = df2.groupby(["Date", "upc"])["visits"].sum().reset_index()

然后将其左合并到销售数据中:

df3 = pd.merge(df1, df2_sum, on=["Date", "upc"], how="left")

关于python - Pandas 使用日期和另一列合并两列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48031445/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com