我有一个列在我的dataframe有一堆日期与小时和分钟,我试图取代它或创建一个新的Excel的串行格式,并有它作为浮动做一些计算。
我尝试了很多方法,但仍然不能让它工作。不管我怎么尝试,我总是出错。我正在加载的源csv有一个名为df['dates']的列,它看起来像这样:
0 2022-02-23 09:30:00-05:00
1 2022-02-23 09:45:00-05:00
2 2022-02-23 10:00:00-05:00
3 2022-02-23 10:15:00-05:00
4 2022-02-23 10:30:00-05:00
...
7912 2023-04-25 10:45:00-04:00
7913 2023-04-25 11:00:00-04:00
7914 2023-04-25 11:15:00-04:00
7915 2023-04-25 11:30:00-04:00
7916 2023-04-25 11:45:00-04:00
下面是我的代码:
import pandas as pd
df['dates'] = pd.to_datetime(df['dates'])
# convert datetime column to excel serial number format
excel_serial_dates = pd.to_datetime("1900-01-01") + pd.to_timedelta(df['dates'] - pd.Timestamp("1899-12-30"), unit='D')
df['excel_serial'] = pd.Series([x.to_pydatetime().timestamp() / 86400 + 25569 for x in excel_serial_dates])
# convert excel serial number column to float
df['excel_serial'] = df['excel_serial'].astype(float)
但是,它返回以下错误:
TypeError: unsupported operand type(s) for -: 'numpy.ndarray' and 'Timestamp'
有什么建议吗?我知道一定有个简单的办法。
先谢谢你了。
1条答案
按热度按时间gg0vcinb1#
好了,最后我意识到,当我从CSV加载文件时,Python将日期列识别为一个对象,它一直在抛出所有内容。以下是我如何解决的:
如果有人有一个更Python的方式来做到这一点,会很乐意看到它!非常感谢!