Pandas按日期列聚合:如何去除时间戳保留纯日期格式?
解决方法
要将分组后Date列表中的时间戳去除,转成YYYY-MM-DD格式,有两种直接可行的方式:
方式一:聚合时直接处理Date列
修改原代码的聚合逻辑,对Date列使用自定义lambda函数,将每个datetime对象格式化为指定字符串后再生成列表:
import pandas as pd # 确保Date列是datetime类型(如果还不是的话) df1['Date'] = pd.to_datetime(df1['Date']) df2 = df1.sort_values(['Date'], ascending=False).groupby(['Remarks'])['dr','cr','Date'].agg( { 'dr': ['sum', list], 'cr': ['sum', list], 'Date': lambda x: x.dt.strftime('%Y-%m-%d').tolist() } ).reset_index()
方式二:先预处理Date列再聚合
先给原数据新增一列日期字符串格式的列,再基于该列进行分组聚合:
import pandas as pd df1['Date'] = pd.to_datetime(df1['Date']) # 新增格式化后的日期列 df1['Date_formatted'] = df1['Date'].dt.strftime('%Y-%m-%d') df2 = df1.sort_values(['Date'], ascending=False).groupby(['Remarks'])['dr','cr','Date_formatted'].agg( { 'dr': ['sum', list], 'cr': ['sum', list], 'Date_formatted': list } ).reset_index() # 可选:将列名改回Date df2 = df2.rename(columns={'Date_formatted': 'Date'})
两种方式最终得到的Date列表都会是['2022-06-28']这类不含时间戳的格式。
内容的提问来源于stack exchange,提问作者PDitta
相关产品推荐
相关产品推荐

