Pandas分组在一列上,另一列python上有最大日期

Anu*_*wat 11 python-2.7 pandas

我有一个包含以下数据的数据框:

invoice_no  dealer  billing_change_previous_month        date
       110       1                              0  2016-12-31
       100       1                         -41981  2017-01-30
      5505       2                              0  2017-01-30
      5635       2                          58730  2016-12-31
Run Code Online (Sandbox Code Playgroud)

我想只有一个拥有最长日期的经销商.所需的输出应该是这样的:

invoice_no  dealer  billing_change_previous_month        date
       100       1                         -41981  2017-01-30
      5505       2                              0  2017-01-30
Run Code Online (Sandbox Code Playgroud)

每个经销商应该与最大日期不同,提前感谢您的帮助.

Ruf*_*fat 10

这里/sf/answers/2907178921/是更正确的解决方案:

df.sort_values('date').groupby('dealer').tail(1)
Run Code Online (Sandbox Code Playgroud)


Vai*_*ali 8

您可以使用groupby和transform使用布尔索引

df_new = df[df.groupby('dealer').date.transform('max') == df['date']]

    invoice_no  dealer  billing_change_previous_month   date
1   100         1       -41981                          2017-01-30
2   5505        2       0                               2017-01-30
Run Code Online (Sandbox Code Playgroud)

  • 与聚合的 groupby 不同,transform 不会改变数据框的形状。因此 df.groupby('dealer').date.transform('max') 将为您提供每个经销商的最大日期的日期系列。现在,您将该系列与日期列进行比较,这将返回一个布尔系列。将布尔系列传递给 df,您将获得条件系列 == df['date'] 为 true 的行。 (2认同)