为何排序后的DataFrame列映射到Python字典后键对应旧值?
问题原因解析
核心原因在于字典的键具有唯一性:
- 使用
dict(zip(df['Id'], df['Date']))构建字典时,会按DataFrame的行顺序依次处理每一组Id和Date键值对。 - 排序后的DataFrame中,
AB001出现了两次:第一行是AB001:2023-12-23,第三行是AB001:2020-03-12。 - 当遍历到第三行的
AB001时,字典中已存在的同名键会被覆盖,最终AB001对应的是最后一次遍历到的值2020-03-12。
如果要保留每个Id对应的最新日期,可先对DataFrame按Id去重,保留每个Id的第一行数据再构建字典:
df_unique = df.drop_duplicates(subset='Id', keep='first') date_dict = dict(zip(df_unique['Id'], df_unique['Date']))
此时date_dict['AB001']会返回2023-12-23。
内容的提问来源于stack exchange,提问作者Akshaya B
相关产品推荐
相关产品推荐

