You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas将人员姓名匹配到以日期为索引的DataFrame?

问题描述

我有一个存储不同人员生日信息的Excel文件,对应的Pandas DataFrame以人员姓名为索引,结构如下:

import pandas as pd
pd.DataFrame({'Date': ['2022-05-01', '2022-05-02', '2022-05-03']},
             index=['Mark', 'Tom', 'Lara'])

我希望将人员姓名匹配到以日期为索引的目标Pandas DataFrame中,目标结构如下:

Time          Address          Birthday
2022-05-01    345yy
2022-05-02    123xx
2022-05-03    456ll

已知无重复生日,需要一个遍历并写入DataFrame对应日期位置的简单示例,要处理Pandas Series。我尝试的代码如下:

df = pd.read_excel("Birthdays.xlsx")
for row in df.itertuples():
    if pd.to_datetime(row[0]) in Birthdays:
    df["Birthday",row] = name
解决方案

你的尝试代码存在遍历逻辑错误、索引匹配不当、赋值语法错误等问题,下面给出两种可行实现方式:

方式1:矢量化匹配(推荐)

Pandas优先推荐矢量化操作,无需手动遍历,效率更高:

import pandas as pd

# 1. 读取并处理生日数据:转换日期格式,构建日期→姓名的映射Series
birth_df = pd.read_excel("Birthdays.xlsx", index_col=0)
birth_df['Date'] = pd.to_datetime(birth_df['Date'])
date_to_name = birth_df.reset_index().set_index('Date')['index']

# 2. 读取/构建目标DataFrame(确保索引为datetime类型)
target_df = pd.DataFrame(
    {'Address': ['345yy', '123xx', '456ll']},
    index=pd.to_datetime(['2022-05-01', '2022-05-02', '2022-05-03'])
)
target_df.index.name = 'Time'

# 3. 批量匹配赋值
target_df['Birthday'] = target_df.index.map(date_to_name)

方式2:遍历实现(满足遍历需求)

如果必须用遍历方式,修正后的代码如下:

import pandas as pd

# 1. 读取生日数据,构建日期→姓名的字典
birth_df = pd.read_excel("Birthdays.xlsx", index_col=0)
birth_df['Date'] = pd.to_datetime(birth_df['Date'])
date_name_dict = birth_df.set_index('Date')['index'].to_dict()

# 2. 读取/构建目标DataFrame
target_df = pd.DataFrame(
    {'Address': ['345yy', '123xx', '456ll']},
    index=pd.to_datetime(['2022-05-01', '2022-05-02', '2022-05-03'])
)
target_df.index.name = 'Time'
target_df['Birthday'] = None  # 初始化Birthday列

# 3. 遍历目标DataFrame并赋值
for date_idx, _ in target_df.iterrows():
    if date_idx in date_name_dict:
        target_df.loc[date_idx, 'Birthday'] = date_name_dict[date_idx]

关键说明

  • 必须保证生日数据和目标DataFrame的日期均为datetime类型,才能精准匹配
  • 用映射关系(Series或字典)替代逐行查找,能大幅提升效率
  • 赋值时使用loc进行精准定位,避免链式赋值引发的警告或错误

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 11:50:23