使用Pandas获取DataFrame中各元素的最后编辑时间
嗨,我来分享下这个问题的解决办法,多亏了@jezrael的思路才顺利搞定!
问题说明
我们部门会定期给项目组合网站生成带随机时间的每日快照,这次拿project_id=1的数据做示例。核心需求有两个:
- 针对每个
project_id,找出各列单元格的最后编辑时间,整理成指定格式的df_table_new - 处理列中空值导致的
NaT错误:把所有NaT替换成timestamp列的最早时间(这里是10/15/19)
解决代码&思路
用Pandas就能轻松实现,具体代码如下:
import pandas as pd # 假设原始数据存储在df_table中 # 1. 按project_id分组,聚合各列的最后编辑时间(跳过空值) df_table_new = df_table.groupby('project_id').agg( lambda col: col.dropna().iloc[-1] if not col.dropna().empty else pd.NaT ) # 2. 获取timestamp列的最早时间,作为NaT的替换值 earliest_timestamp = df_table['timestamp'].min() # 3. 替换所有NaT为指定的最早时间 df_table_new = df_table_new.fillna(earliest_timestamp)
步骤拆解
- 分组聚合环节:用自定义lambda函数处理每一列——先剔除空值,如果列里还有有效数据,就取最后一条(对应最后编辑时间);如果全是空值,就返回
NaT - 提前提取
timestamp的最小时间,保证所有空值替换的基准一致 - 最后用
fillna批量替换NaT,彻底解决空值报错的问题
内容的提问来源于stack exchange,提问作者Mr42
相关产品推荐
相关产品推荐

