基于最新日期获取字符串值的最后一次出现

-1 投票
1 回答
27 浏览
提问于 2025-04-14 16:41

这里有三列数据,分别是:商品、商品类型和销售额。商品类型经常会变化。有时候,比如说“苹果”,在某个特定日期(比如1月1日)它的类型是“健康”,但在另一个日期(比如1月5日)它的类型可能就变成了“素食”。这样的商品有超过500个。

例如,数据框的样子如下:

商品 商品类型 日期 销售额
苹果 健康 1月1日 10
苹果 素食 1月5日 5

我们需要的输出结果是:

商品 商品类型 销售额
苹果 素食 15

(假设“素食”是数据中的最后一条记录),而总销售额是15。

现在如果在1月7日又添加了一条记录(苹果,水果,2),那么输出结果就会变成:

例如,数据框的样子如下:

商品 商品类型 日期 销售额
苹果 健康 1月1日 10
苹果 素食 1月5日 5
苹果 水果 1月7日 2

所需的输出结果是:

商品 商品类型 销售额
苹果 水果 17

我尝试使用 df.groupby .last 函数,但它只适用于数字数据。

1 个回答

0

在这种情况下,使用groupby的last函数应该是有效的,只要你能确认你的数据是按时间顺序输入的,你可以直接这样做:

import pandas

df = pandas.DataFrame(columns=['item', 'type', 'date', 'sales'])
df.loc[0] = ["Apple", "unripe", "Jan 1", 10]
df.loc[1] = ["Apple", "ripe", "Jan 10", 5]
df.loc[2] = ["Orange", "ripe", "Jan 12", 6]
df.groupby(["item"]).agg({'type': 'last', 'date': 'last', 'sales': sum})

这个groupby确保使用的是最新的日期和类型,而销售额则是所有分组条目的总和。

输出结果看起来像这样:

        type    date    sales
item            
Apple   ripe    Jan 10  15
Orange  ripe    Jan 12  6

撰写回答