大Pandas 的数据帧:

data = pd.DataFrame ({
    'group': ['A', 'A', 'B', 'B', 'C', 'C'],
    'date': ['2023-01-15', '2023-02-20', '2023-01-10', '2023-03-05', '2023-02-01', '2023-04-10'],
    'value': [10, 15, 5, 25, 8, 12]} )

try 根据聚合函数中每个‘group’的‘Date’列的最小值和最大值来获取‘Value’列的值:

## the following doesn't work
    output = (
      df
      .groupby(['group'],as_index=False).agg(
          ## there are some other additional aggregate functions happening here too.

          value_at_min = ('value' , lambda x: x.loc[x['date'].idxmin()])
        , value_at_max = ('value' , lambda x: x.loc[x['date'].idxmax()])
       ))

这不起作用,即使将Date转换为DateTime(实际上,我的原始Date列是DateTime格式).

所需输出应为:

    group   min_date    max_date    value_at_min    value_at_max
0   A       2023-01-15  2023-02-20      10              15
1   B       2023-01-10  2023-03-05      5               25
2   C       2023-02-01  2023-04-10      8               12

推荐答案

按日期对数据帧进行排序,然后按GROUPBY并按nth进行聚合,以获得与最小日期和最大日期对应的行

g = data.sort_values(['date']).groupby('group')
g.nth(0).merge(g.nth(-1), on='group', suffixes=['_min', '_max'])

         date_min  value_min    date_max  value_max
group                                              
A      2023-01-15         10  2023-02-20         15
B      2023-01-10          5  2023-03-05         25
C      2023-02-01          8  2023-04-10         12

Python相关问答推荐

无法获得指数曲线_fit来处理日期

从多行文本中提取事件对

不同数据类型的Python成员变量不会在具有相同优先级的不同线程中更新

在Python中使用readline函数时如何向下行

使用Python OpenCV的文本检测分割

如何在vercel中指定Python运行时版本?

使用Python和PRNG(不是梅森龙卷风)有效地生成伪随机浮点数在[0,1)中均匀?

PyQt5如何将pyuic 5生成的Python类添加到QStackedWidget中?

Python中的负前瞻性regex遇到麻烦

如何根据日期和时间将状态更新为已过期或活动?

在函数内部使用eval(),将函数的输入作为字符串的一部分

将特定列信息移动到当前行下的新行

在Google Colab中设置Llama-2出现问题-加载判断点碎片时Cell-run失败

数据抓取失败:寻求帮助

在ubuntu上安装dlib时出错

将JSON对象转换为Dataframe

如何在Python中找到线性依赖mod 2

matplotlib图中的复杂箭头形状

Python避免mypy在相互引用中从另一个类重定义类时失败

基于Scipy插值法的三次样条系数