Pandas: добавить несколько дат в один столбец - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть следующий код, который импортирует строку часов сотрудника и определяет 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 (self, key, value) 3117 else: 3118 # set column -> 3119 self._set_item (key, значение) 3120 3121 def _setitem_slice (self, key, value):

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

_set_item (self, key, value) 3192 3193 self._ensure_valid_index (value) -> 3194 value = self._sanitize_column (ключ, значение) 3195 NDFrame._set_item (self, key, value) 3196

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

_sanitize_column (self, key, value, broadcast) 3389 3390 # превратить меня в ndarray -> 3391 value = _sanitize_index (значение, self.index, copy = False) 3392, если не isinstance (значение, (np.ndarray, индекс)): 3393, если isinstance (значение, список) и len (значение)> 0:

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

_sanitize_index (данные, индекс, копия) 3999 4000, если len (данные)! = len (индекс): -> 4001 повысить ValueError ('Length of va lues не соответствует длине '' index ') 4002 4003, если isinstance (data, ABCIndexClass), а не копия:

ValueError: Length of values does not match length of index

1 Ответ

0 голосов
/ 15 апреля 2020

так как нельзя добавить многострочный код-комментарий сюда код:

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...