如何基于日期合并不同格式日期的数据集?解决resample报错问题
问题解决与合并步骤
错误原因
你遇到的TypeError是因为rank_date列是object(字符串)类型,即便将其设为DataFrame索引,它也只是普通的Index对象,而resample方法仅支持DatetimeIndex、TimedeltaIndex或PeriodIndex类型的索引,因此无法执行重采样操作。
分步解决方法
1. 将rank_date转换为datetime格式
先把字符串类型的日期列转为datetime类型,确保后续索引符合resample的要求:
# 根据你的rank_date实际格式调整format参数,比如'%Y-%m-%d'对应"2024-05-20"这类格式 rank['rank_date'] = pd.to_datetime(rank['rank_date'], format='%Y-%m-%d', errors='coerce')
errors='coerce'会把无法识别的日期字符串转为NaT(缺失时间值),后续可根据需求处理这些缺失值。
2. 执行重采样与填充操作
转换完成后,再运行你原来的分组重采样代码,此时索引已是DatetimeIndex,resample可正常工作:
rank = rank.set_index(['rank_date']).groupby(['country_full'], group_keys=False).resample('D').first().fillna(method='ffill').reset_index()
3. 基于日期合并两个数据集
现在两个数据集的日期列都是datetime格式,直接用merge方法合并即可。假设第一个数据集的日期列名为date,第二个的日期列是处理后的rank_date:
# how参数可根据需求选择:inner(交集)、left(保留第一个数据集所有行)、right(保留第二个数据集所有行)、outer(并集) merged_df = pd.merge(first_df, rank, left_on='date', right_on='rank_date', how='inner')
内容的提问来源于stack exchange,提问作者Yash Salvi
相关产品推荐
相关产品推荐

