得到第一个和最后一个发生重复的价值

0

的问题

我有一个 dataframe 像这样的

index    col1     col2    col3    col4
  0      11/20    11/26   abc     35
  1      11/21    11/24   xxx     30
  2      11/22    11/27   abc     20

在这里, col3 具有同样的价值(重复基础上的价值)。 我 sum() col4 从行基于 col3 值。

因此,在这种情况下我做的

df = df.groupby(['col3'])[['col4']].sum()

但用这种方法得到我

index    col3    col4
  0      abc     55
  1      xxx     30

我希望能够保留第一个发生重复的价值的 col1(11/20)和最后一次出现 col2(11/27),因此最终产品会看起来像

index    col1     col2    col3    col4
  0      11/20    11/27   abc     55
  1      11/21    11/24   xxx     30

pandas python
2021-11-24 05:23:58
2

最好的答案

2

一种方法的使用 pandas.DataFrame.groupby.agg:

new_df = df.groupby("col3", as_index=False).agg({"col1": "first",
                                                 "col2": "last",
                                                 "col4": "sum"})
print(new_df)

输出:

  col3   col1   col2  col4
0  abc  11/20  11/27    55
1  xxx  11/21  11/24    30
2021-11-24 05:27:44

转换1列/第2列为datetime和使用min/max可能更强劲,如果我们总是想要"第一"(尽早)和日期的"最后"(新的)日期。 (再次,这取决于使用的情况下)
Henry Ecker
0

提供了大熊猫 firstlast 聚合。

2021-11-24 05:28:04

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................