python - 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()
但无法加入日期。
解决方案
我假设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'})
推荐阅读
- r - 如何解释 dplyr 消息“summarise()”通过“x”重新组合输出(用“.groups”参数覆盖)?
- javascript - Socket IO不断断开并重新连接
- c# - 使用 C# 更新 XML 文件
- java - 错误 SocketTimeoutException 在 android 中连接到 google
- java - 机器人类 - KeyEvent 无法将文档上传到 KeyEvent.VK_V 处的 windows 文件夹
- java - Spring Security 阻止非授权请求的 CSS 资源
- javascript - 在firebase云功能中通过fs JavaScript读取mp4
- html - 为什么带有过渡的模糊滤镜会有一些滞后和问题?
- c++ - Clang-tidy 找不到头文件
- machine-learning - 检查输入时如何解决错误:大小不正确