首页 > 解决方案 > Groupby 客户的 id 并保留 Pandas 中不为空的日期

问题描述

我有一个数据集,其中包含客户第一次和最后一次付款的日期。日期在单独的列中,因此数据集如下所示:

ID 首付款 最后一次付款
11 23/10/2010 0
11 0 2010 年 11 月 24 日
223 2012 年 11 月 1 日 0
223 0 2012 年 12 月 2 日

我如何按 id 分组才能看起来像这样?

ID 首付款 最后一次付款
11 23/10/2010 2010 年 11 月 24 日
223 2012 年 11 月 1 日 2012 年 12 月 2 日

我使用groupby.df['id'].sum()但无法加入日期。

标签: pythonpandasdataframepandas-groupby

解决方案


我假设first_payment是唯一的非零 first_payment 列,并且是 last_payment 列中唯一的非零last payment值,因为您尝试使用该sum()方法进行聚合,如果这是真的,那么您可以这样做:

df.replace('0',np.NaN)   # Replace zero by Null values
df.replace(0,np.NaN)     # If zeros are numerical
df_new = df.groupby('id').agg({'first_payment': 'first', 
                               'last_payment': 'last'})

推荐阅读