В процессе написания скрипта для автоматизации составления отчета я пытаюсь создать столбец меток времени на основе условного выражения с помощью np.where ().Логика следующая:
df['StartMonth'] = np.where(
chng['Count'] == 1, pd.Timestamp(
int(year), chng['Month'].astype(int), 1), str('')
)
DataFrame - это список сотрудников, которые считаются добавлениями или удалениями, где chng['Count']
используется в качестве флага, который показывает +1 как добавление и -1как удаление.Поэтому, когда добавляется любой сотрудник, создайте серию StartMonth
, в которой фиксированная переменная year
, Month
строки и 1
используются в качестве основы для создания метки времени (year
и chng).['Месяц'] являются строками, поэтому приводим их как условные целые числа).Вывод функции выглядит следующим образом для каждой строки True
:
Month Count StartMonth
0 1 1 1970-01-01 00-00-01.000002+00019:00:01
1 1 1 1970-01-01 00-00-01.000002+00019:00:01
2 4 1 1970-01-01 00-00-01.000002+00019:00:01
3 5 1 1970-01-01 00-00-01.000002+00019:00:01
4 10 1 1970-01-01 00-00-01.000002+00019:00:01
Я пробовал это с year
и chng ['Month'] уже приведен как целые числа до условногои это был тот же результат.Единственный раз, когда он «работает», это когда chng ['Month'] заменяется любым другим произвольным числом, что наводит меня на мысль, что это проблема.Я выполнил множество других условных выражений с помощью np.where (), которые используют значения из другой серии в DataFrame (хотя и не в качестве основы для создания метки времени) без каких-либо проблем, поэтому я не уверен, что является причиной этого.