遍历 Pandas 浮点时间戳 DataFrame 并转换为日期时间
Iterate through a Pandas DataFrame of Float time stamps and convert to date time
我有一个 Pandas 数据框,其中包含 2000 多行,日期采用浮点格式,如下所示:
42704.99686342593
表示 (2016, 11, 30, 23, 55, 29)
的日期时间值
我想要做的是迭代数据框中的每一行,理想情况下将浮点数转换为正确的日期时间格式 d/m/Y H/M/S
并将其保存到新的数据框中。
使用Python 2.7。
我找不到任何重复的问题,也无法通过类似问题的解决方案来解决问题,因此非常感谢您的帮助。
谢谢。
看来你用的是serial date
什么是Excel
格式。
最简单的是减去25569
并使用to_datetime
和参数unit='d'
:
df = pd.DataFrame({'date':[42704.99686342593,42704.99686342593]})
print (df)
date
0 42704.996863
1 42704.996863
print (pd.to_datetime(df.date - 25569, unit='d'))
0 2016-11-30 23:55:28.963200
1 2016-11-30 23:55:28.963200
Name: date, dtype: datetime64[ns]
另一种解决方案是减去 timedelta
或 offset
:
print (pd.to_datetime(df.date, unit='d') - pd.to_timedelta('25569 Days'))
0 2016-11-30 23:55:28.963200
1 2016-11-30 23:55:28.963200
Name: date, dtype: datetime64[ns]
print (pd.to_datetime(df.date, unit='d') - pd.offsets.Day(25569))
0 2016-11-30 23:55:28.963200
1 2016-11-30 23:55:28.963200
Name: date, dtype: datetime64[ns]
谢谢 for link。
我有一个 Pandas 数据框,其中包含 2000 多行,日期采用浮点格式,如下所示:
42704.99686342593
表示 (2016, 11, 30, 23, 55, 29)
我想要做的是迭代数据框中的每一行,理想情况下将浮点数转换为正确的日期时间格式 d/m/Y H/M/S
并将其保存到新的数据框中。
使用Python 2.7。
我找不到任何重复的问题,也无法通过类似问题的解决方案来解决问题,因此非常感谢您的帮助。
谢谢。
看来你用的是serial date
什么是Excel
格式。
最简单的是减去25569
并使用to_datetime
和参数unit='d'
:
df = pd.DataFrame({'date':[42704.99686342593,42704.99686342593]})
print (df)
date
0 42704.996863
1 42704.996863
print (pd.to_datetime(df.date - 25569, unit='d'))
0 2016-11-30 23:55:28.963200
1 2016-11-30 23:55:28.963200
Name: date, dtype: datetime64[ns]
另一种解决方案是减去 timedelta
或 offset
:
print (pd.to_datetime(df.date, unit='d') - pd.to_timedelta('25569 Days'))
0 2016-11-30 23:55:28.963200
1 2016-11-30 23:55:28.963200
Name: date, dtype: datetime64[ns]
print (pd.to_datetime(df.date, unit='d') - pd.offsets.Day(25569))
0 2016-11-30 23:55:28.963200
1 2016-11-30 23:55:28.963200
Name: date, dtype: datetime64[ns]
谢谢