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

Pandas:向单列添加多日期时遇ValueError错误求助

解决Pandas赋值时的ValueError: Length of values does not match length of index问题

咱们先聊聊你遇到的这个问题到底出在哪:

  • 你循环里生成的sample_employee_clockin_dates是一个包含多个时间点的DatetimeIndex(比如从4:30到15:30的30分钟间隔序列,长度有23个),但你的原DataFramesample_employee_clockin只有1行。
  • 而且循环逻辑还有个小坑:每次迭代都会覆盖sample_employee_clockin_dates,最后它只保留了这唯一一行生成的长序列,直接赋值给只有1行的列,Pandas肯定会报错——长度对不上啊!

下面给你两种实用的解决方案,看你需求选就行:

方案1:把时间序列存成列表放在单元格里

如果你希望每个员工的30分钟间隔时间列表存在单独的单元格里,用apply替代循环更简洁高效:

import pandas as pd
from pandas import Timestamp

# 你的原始数据
sample_employee_clockin = pd.DataFrame({'direction_in': {15831: Timestamp('2019-06-25 04:37:59')}, 
                                        'emp': {15831: 73.0}, 
                                        'direction_out': {15831: Timestamp('2019-06-25 15:17:35')}, 
                                        'time_difference': {15831: '0 days 10:39:36'}, 
                                        'complete_record': {15831: 'yes'}, 
                                        'terminal': {15831: 1.0}, 
                                        'job_title': {15831: 44.0}, 
                                        'division': {15831: 1.0}})

# 定义生成时间间隔的函数
def get_30min_intervals(row):
    start_time = row["direction_in"].floor(freq="30min")
    end_time = row["direction_out"].ceil(freq="30min")
    return pd.date_range(start=start_time, end=end_time, freq='30min').tolist()

# 给DataFrame新增列
sample_employee_clockin["clock_in_times"] = sample_employee_clockin.apply(get_30min_intervals, axis=1)

这样新列clock_in_times的每个单元格都是一个时间列表,和原DataFrame的行数完全匹配,不会再报错。

方案2:把时间序列拆成多行(每个时间点对应一行)

如果你的需求是后续要按时间维度分析,想让每个30分钟时间点单独占一行,保留员工的其他信息,可以在方案1的基础上用explode拆分:

# 先生成包含时间列表的列(同方案1)
sample_employee_clockin["clock_in_times"] = sample_employee_clockin.apply(get_30min_intervals, axis=1)
# 把列表拆分成多行
expanded_df = sample_employee_clockin.explode("clock_in_times")

处理后,每个时间点都会对应一行原员工的记录,方便后续统计分析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 09:42:36