带日期的Numpy Where-将日期转换为长整数



我想写一个条件,检查一个日期并返回另一个日期
但是numpy.where一直在把我的日期转换成一个长整数。我四处寻找解决方案,但我无法将其应用于我的情况。我对蟒蛇有点陌生
这是我的代码:

df = {'my_date':['1900-01-01','2021-10-01','2021-08-04']}
df = pd.DataFrame(df)
df['new_date'] = np.where(pd.to_datetime(df.my_date) > pd.to_datetime('2022-01-01'),pd.to_datetime('1900-01-01'),pd.to_datetime(df.my_date))
df
my_date     new_date
0   1900-01-01  -2208988800000000000
1   2021-10-01  1633046400000000000
2   2021-08-04  1628035200000000000

我不明白我做错了什么,如果有更好的方法来陈述我的病情?

感谢

我认为这里不需要np.where,也不需要这么多pd.to_datetime调用。

df['my_date'] = pd.to_datetime(df['my_date'])
df[df['my_date'] > '2022-01-01'] = '1900-01-01'

如果你想把它添加到一个新的列中,使用这个:

df['new_column'] = df['my_date'].where(~(df['my_date'] > '2022-01-01'), '1900-01-01')

最新更新