<input type="checkbox" onchange="document.getElementById('clicker').click()" ... />
<input id="clicker" type="submit" style="display:none;" />
但它在2000-2999之间的日期工作得非常好。
不确定这里有什么问题。有人可以帮我吗?
提前致谢。
答案 0 :(得分:2)
正如pandas documentation所述,pandas Timestamp
对象只能到达2262年。但是,the documentation also describes a way around this limitation.
我们的想法是,如果您不需要datetime64
dtype的纳秒分辨率,则可以使用PeriodIndex
来获得所需的结果。
在您的情况下,看起来您可能需要以下内容:
s = pd.Series([30000601, 20160601, 20160701, 20160501])
def conv(x):
return pd.Period(year = x // 10000, month = x//100 % 100, day = x%100, freq='D')
span = pd.PeriodIndex(s.apply(conv))
df.index = span
答案 1 :(得分:1)
您的代码为我提出了不同的异常(SyntaxError
,ValueError: arrays must all be same length
和pandas.tslib.OutOfBoundsDatetime: Out of bounds
错误),但我认为最后一个,OutOfBoundsDatetime
指的是同一个异常你看到的问题。
从包含类似日期的对象的数据构建DataFrame时,日期将转换为NumPy datetime64[ns]
dtype。例如,
import datetime as DT
import pandas as pd
df = pd.DataFrame({'one':[DT.datetime(2000, 6, 1, 0, 0), DT.datetime(2016, 6, 1, 0, 0), DT.datetime(2016, 7, 1, 0, 0), DT.datetime(2016, 6, 1, 0, 0),], 'two':[1,2,3,4]})
print(df.info())
# <class 'pandas.core.frame.DataFrame'>
# RangeIndex: 4 entries, 0 to 3
# Data columns (total 2 columns):
# one 4 non-null datetime64[ns] # <-- Notice the dtype
# two 4 non-null int64
# dtypes: datetime64[ns](1), int64(1)
# memory usage: 144.0 bytes
目前,datetime64[ns]
是Pandas的only NumPy datetime64 data type supported。 The range of dates此数据类型可以表示为[1678 AD, 2262 AD]
。因此,当datetime.datetime
对象引用此范围之外的日期时会发生异常。
答案 2 :(得分:0)
最后我开始工作了。
s = pd.Series([30000601, 20160601, 20160701, 20160501])
def conv(x):
return pd.Period(year = x // 10000, month = x//100 % 100, day = x%100, freq='D')
span = pd.PeriodIndex(s.apply(conv))
df.index = span
感谢您的帮助。