У меня есть набор данных с информацией о заработной плате сотрудников (df2).У него есть дата, название должности, время начала смены, отработанные часы.
Цель состоит в том, чтобы создать набор данных (df), который показывает, сколько сотрудников работало в любой данный час.
Проблема, с которой я сталкиваюсь, заключается в том, что установка значения в столбце не влияет на исходный набор данных (df).
data1 = [['2/1/2019','Cashier',0,0,0,0,0,0,0], ['2/2/2019','Cashier',0,0,0,0,0,0,0], ['2/1/2019','Server',0,0,0,0,0,0,0]]
cols1 = ['Date', 'Job'] + list(pd.date_range(pd.to_datetime('2/1/2019 15:00'), periods=7, freq='H'))
df=pd.DataFrame(data1, columns=cols1)
data2=[['2/1/2019', 'Cashier', pd.to_datetime('2/1/2019 16:00'), 5.2]]
cols2=['Date', 'Job', 'Start', 'Hours']
df2=pd.DataFrame(data2, columns=cols2)
def count_shifts(x):
start_time=x['Start']
worked_in_minutes =round(x['Hours']) * 60 + (x['Hours'] - round(x['Hours']))
worked_range_index = pd.date_range(start_time, periods=worked_in_minutes, freq='T')
worked_series = pd.Series(1/60, index=worked_range_index)
worked_series=worked_series.resample('H', label='left').sum()
df.loc[:,list(worked_series.index)] \
[(df['Job']==x['Job']) & (df['Date']==x['Date'])] = worked_series.values
df2.apply(count_shifts, axis=1)
Я ожидаю, что столбцы df, соответствующие часам 15: 00,16: 00,17: 00,18: 00,19: 00 равны 1 и 20:00 равны .2 Но фактический результат заключается в том, что они по-прежнему равны 0