首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在python中获取基于两个类别的列的最后一个值?

问如何在python中获取基于两个类别的列的最后一个值?
EN

Stack Overflow用户
提问于 2020-07-27 22:56:05
回答 2查看 452关注 0票数 0

我有一个数据集,其中包含date、shift、value等列。我想从值列中提取每个date和shift的最后一个值。例如,对于每一天,有两行,一行包含每个班次的日期时间、班次(白天或晚上)和最后一个数据点from value。

在本例中,我想提取第3行(因为7/14和Day time的最高值为3)

​

​

我只知道如何获得每一列的最大值。我尝试了几种方法来完成这项工作,但对我来说都不起作用。我是python的新手,正在寻求您的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-27 23:08:05

假设数据已经按日期排序,您可以这样做吗?或者按日期排序,然后执行此操作?

代码语言:javascript
复制
df['day'] = df['date'].apply(lambda x: x.date())
df.groupby(['day','shift'])['value'].agg(list).apply(lambda x: x[-1])

这将按日期和班次对数据帧进行分组,创建每个组中的值的列表,并取最后一个值。

输出:

代码语言:javascript
复制
day         shift
2020-07-14  day      3
            night    5
Name: value, dtype: int64

这里有一种方法可以做到这一点,但也可以抓取多个其他列...我承认它不是最干净的,可能有更好的方法,但它是有效的:

df:

代码语言:javascript
复制
                 date  shift value value2         day
0 2020-07-14 18:58:00    day     1      9  2020-07-14
1 2020-07-14 18:59:00    day     2      8  2020-07-14
2 2020-07-14 18:59:00    day     3      7  2020-07-14
3 2020-07-14 19:00:00  night     4      6  2020-07-14
4 2020-07-14 19:00:00  night     5      5  2020-07-14

cols = ['value', 'value2']
df.groupby(['day','shift'])[cols].agg(list).apply(lambda x: [x[col][-1] for col in cols], axis=1)

输出:

代码语言:javascript
复制
day         shift
2020-07-14  day      [3, 7]
            night    [5, 5]
dtype: object
票数 1
EN

Stack Overflow用户

发布于 2020-07-27 23:17:38

如果您需要最大值而不是最后一个

代码语言:javascript
复制
import pandas

data = {"date": ["day1","day1","day1","day1","day1"],
        "shift": ["Day","Day","Day","Night","Night"],
        "value": [1, 2, 3, 4, 5]
        }

df = pandas.DataFrame(data)
df.groupby(["date","shift"]).max()

输出

代码语言:javascript
复制
            value
date shift       
day1 Day        3
     Night      5

查看pandas包、数据帧和groupby操作以获得更多帮助:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.groupby.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63117967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档