熊猫:将多个日期添加到单个列

时间:2020-04-09 12:13:21

标签: python pandas dataframe

我有以下代码,用于导入员工的时钟记录行,并计算出员工在建筑物中的30分钟间隔。然后,我想将此(“ sample_employee_clockin_dates”)分配回原始数据帧,但出现错误:

ValueError:值的长度与索引的长度不匹配

import pandas as pd


    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}})

    for label, row in sample_employee_clockin.iterrows():
        date_in = row["direction_in"]
        date_out = row["direction_out"]
        sample_employee_clockin_dates = pd.date_range(start=date_in.floor(freq="30min"),end=date_out.ceil(freq="30min"),freq='30min')

    sample_employee_clockin["clock_in_times"] = sample_employee_clockin_dates

完整错误是:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-81-59a967c4631c> in <module>
      8     sample_employee_clockin_date = pd.date_range(start=date_in.floor(freq="30min"),end=date_out.ceil(freq="30min"),freq='30min')
      9 
---> 10 sample_employee_clockin["clock_in_times"] = sample_employee_clockin_date

c:\program files (x86)\python37-32\lib\site-packages\pandas\core\frame.py in

setitem ((自身,键,值) 其他3117: 3118#设置列 -> 3119 self._set_item(键,值) 3120 3121 def _setitem_slice(自身,键,值):

c:\program files (x86)\python37-32\lib\site-packages\pandas\core\frame.py in

set_item(自身,键,值) 3192 3193 self._ensure_valid_index(值) -> 3194值= self._sanitize_column(键,值) 3195 NDFrame._set_item(自身,键,值) 3196

c:\program files (x86)\python37-32\lib\site-packages\pandas\core\frame.py in

_sanitize_column(自身,键,值,广播) 3389 3390#把我变成一个ndarray -> 3391值= _sanitize_index(值,self.index,copy = False) 3392如果不是isinstance(值,(np.ndarray,索引)): 3393如果isinstance(value,list)and len(value)> 0:

c:\program files (x86)\python37-32\lib\site-packages\pandas\core\series.py in

_sanitize_index(数据,索引,副本) 3999 4000如果len(data)!= len(index): -> 4001提高ValueError('值的长度与''index'的长度不匹配) 4002 4003如果isinstance(data,ABCIndexClass)并且不复制:

ValueError: Length of values does not match length of index

1 个答案:

答案 0 :(得分:0)

因为不可能在此处添加多行代码注释代码:

import pandas as pd


sample_employee_clockin = pd.DataFrame({'direction_in': {15831: pd.Timestamp('2019-06-25 04:37:59')}, 'emp': {15831: 73.0}, 'direction_out': {15831: pd.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}})

for label, row in sample_employee_clockin.iterrows():
    date_in = row["direction_in"]
    date_out = row["direction_out"]
    sample_employee_clockin_dates = pd.date_range(start=date_in.floor(freq="30min"),end=date_out.ceil(freq="30min"),freq='30min')

sample_employee_clockin["clock_in_times"] = pd.Series
sample_employee_clockin.at[15831,'clock_in_times'] = sample_employee_clockin_dates.to_list()