我将没有时区信息的datetime对象存储在pandas数据框中。 检索时间戳信息时,时间戳与从原始datetime对象获得的时间戳不同。
import pandas as pd
from datetime import datetime
dt = datetime.now()
print(dt)
print(dt.timestamp())
df = pd.DataFrame(data=[(dt)],columns=["date"])
print(df)
epoche_from_pandas = df.date.apply(lambda x: x.timestamp()).values[0]
print(epoche_from_pandas)
打印熊猫数据框显示相同的日期时间字符串,但纪元值不同。两个时间戳都偏移了3600秒,这相当于我当地的时区差异(+1小时)。
2020-03-20 01:05:05.457290
1584662705.45729
2020-03-20 01:05:05.457290
1584666305.45729
我的假设是,pandas使用其自己的内部表示形式,该内部表示形式忽略了纪元值(可能使用年,月,日,时...组成),并以unix时间(未本地化)打印。这意味着,虽然两个打印语句都使用相同的字符串,但大熊猫时间实际上比之前大1小时,因为它反映的是通常落后1小时的unix。
以上是否正确?
答案 0 :(得分:1)
从技术上讲,这还不是解决问题的方法,但是我发现了一段更清晰的代码,似乎可以重现该问题:
$PATH:
C:\ProgramData\Anaconda3\envs\msudev
C:\ProgramData\Anaconda3\envs\msudev\Library\mingw-w64\bin
C:\ProgramData\Anaconda3\envs\msudev\Library\usr\bin
C:\ProgramData\Anaconda3\envs\msudev\Library\bin
C:\ProgramData\Anaconda3\envs\msudev\Scripts
C:\ProgramData\Anaconda3\envs\msudev\bin
C:\ProgramData\Anaconda3\condabin
C:\Program Files\Python38\Scripts
C:\Program Files\Python38
C:\Program Files (x86)\Embarcadero\Studio\20.0\bin
C:\Users\Public\Documents\Embarcadero\Studio\20.0\Bpl
C:\Program Files (x86)\Embarcadero\Studio\20.0\bin64
C:\Program Files (x86)\Common Files\Oracle\Java\javapath
C:\Users\Public\Documents\Embarcadero\Studio\19.0\Bpl
C:\Users\Public\Documents\Embarcadero\Studio\18.0\Bpl
C:\Users\Public\Documents\RAD Studio\10.0\Bpl
C:\Program Files (x86)\Intel\iCLS Client
C:\Program Files\Intel\iCLS Client
C:\Windows\system32
C:\Windows
C:\Windows\System32\Wbem
C:\Windows\System32\WindowsPowerShell\v1.0
C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common
C:\Program Files (x86)\Intel\Intel® Management Engine Components\DAL
C:\Program Files\Intel\Intel® Management Engine Components\DAL
C:\Program Files (x86)\Intel\Intel® Management Engine Components\IPT
C:\Program Files\Intel\Intel® Management Engine Components\IPT
C:\Program Files\Intel\WiFi\bin
C:\Program Files\Common Files\Intel\WirelessCommon
C:\WINDOWS\system32
C:\WINDOWS
C:\WINDOWS\System32\Wbem
C:\WINDOWS\System32\WindowsPowerShell\v1.0
C:\Program Files (x86)\Windows Live\Shared
C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR
C:\Windows\system32
C:\Windows
C:\Windows\System32\Wbem
C:\Windows\System32\WindowsPowerShell\v1.0
C:\Program Files\PuTTY
C:\Program Files\Git\cmd
C:\Program Files\nodejs
C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit
C:\Program Files\dotnet
C:\Program Files\Microsoft SQL Server\130\Tools\Binn
C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn
C:\ProgramData\chocolatey\bin
C:\Program Files\Java\apache-ant-1.10.7\bin
C:\Program Files\Java\jdk1.6.0_18\jre\bin
C:\Program Files\Java\jdk1.8.0_60\bin
C:\Program Files\Java\jdk1.8.0_60\jre\bin
C:\Users\1\AppData\Roaming\npm
sys.path:
C:\ProgramData\Anaconda3\envs\msudev\Scripts
C:\ProgramData\Anaconda3\envs\msudev\python38.zip
C:\ProgramData\Anaconda3\envs\msudev\DLLs
C:\ProgramData\Anaconda3\envs\msudev\lib
C:\ProgramData\Anaconda3\envs\msudev
C:\ProgramData\Anaconda3\envs\msudev\lib\site-packages
C:\ProgramData\Anaconda3\envs\msudev\lib\site-packages\win32
C:\ProgramData\Anaconda3\envs\msudev\lib\site-packages\win32\lib
C:\ProgramData\Anaconda3\envs\msudev\lib\site-packages\Pythonwin
sys.executable:
C:\ProgramData\Anaconda3\envs\msudev\python.exe
sys.version:
3.8.1 (default, Mar 2 2020, 13:06:26) [MSC v.1916 64 bit (AMD64)]
platform.platform():
Windows-10-10.0.18362-SP0
where jupyter:
C:\ProgramData\Anaconda3\envs\msudev\Scripts\jupyter.exe
pip list:
Package Version
------------------ -------------------
attrs 19.3.0
backcall 0.1.0
bleach 3.1.3
certifi 2019.11.28
colorama 0.4.3
decorator 4.4.2
defusedxml 0.6.0
entrypoints 0.3
importlib-metadata 1.5.0
ipykernel 5.1.4
ipython 7.13.0
ipython-genutils 0.2.0
jedi 0.16.0
Jinja2 2.11.1
jsonschema 3.2.0
jupyter-client 6.0.0
jupyter-core 4.6.3
MarkupSafe 1.1.1
mistune 0.8.4
nbconvert 5.6.1
nbformat 5.0.4
notebook 6.0.3
pandocfilters 1.4.2
parso 0.6.2
pickleshare 0.7.5
pip 20.0.2
prometheus-client 0.7.1
prompt-toolkit 3.0.4
Pygments 2.6.1
pyrsistent 0.15.7
python-dateutil 2.8.1
pywin32 227
pywinpty 0.5.7
pyzmq 19.0.0
Send2Trash 1.5.0
setuptools 46.0.0.post20200309
six 1.14.0
terminado 0.8.3
testpath 0.4.4
tornado 6.0.4
traitlets 4.3.3
wcwidth 0.1.8
webencodings 0.5.1
wheel 0.34.2
wincertstore 0.2
zipp 3.1.0
输出:
from datetime import datetime
import pandas as pd
dt = datetime.now()
print(f"dt: {dt}")
print(f"dt timestamp: {dt.timestamp()}\n")
pd_ts = pd.Timestamp(dt)
print(f"pd Ts: {pd_ts}")
print(f"pd Ts .timestamp(): {pd_ts.timestamp()}")
print(dt.timestamp() - pd_ts.timestamp())
答案 1 :(得分:0)
使用to_pydatetime()将数据转换为python datetime对象,然后timestamp()
返回相同的值。
import pandas as pd
from datetime import datetime
dt = datetime.now()
print(dt)
print(dt.timestamp())
df = pd.DataFrame(data=[(dt)],columns=["date"])
print(df)
epoche_from_pandas = df.date.apply(lambda x: x.to_pydatetime().timestamp()).values[0]
print(epoche_from_pandas)
结果:
2020-03-19 21:20:56.633482
1584667256.633482
date
0 2020-03-19 21:20:56.633482
1584667256.633482