我的数据有1947年至2012年的每日indate
和1997年至2012年的outdate
。我不明白下面的行怎么会导致monthstoadd = 62844
(这会放大一些时间偏移量)。它能转换成uint16在循环中使用吗?为什么,你能做什么呢?在
下面的行适用于INDATUMA
和{indate
和{
all_treatments['indate'] = pd.to_datetime(all_treatments['INDATUMA'], errors='coerce',format='%Y%m%d')
all_treatments['outdate'] = pd.to_datetime(all_treatments['UTDATUMA'], errors='coerce',format='%Y%m%d')
all_treatments['extramonths'] = 12*(all_treatments['outdate'].dt.year-all_treatments['indate'].dt.year)+(all_treatments['outdate'].dt.month-all_treatments['indate'].dt.month)
emcolix = all_treatments.columns.get_loc('extramonths')
for i in range(0,originalN):
monthstoadd = all_treatments.iloc[i,emcolix].astype('uint16')
for x in range(0,monthstoadd):
最后一行显示了一个循环,它在x = 3174
与{
Pandas系列中整数的默认数据类型是
int64
a有符号64位整数。在如果您使用
^{pr2}$astype
将数据类型转换为uint16
一个无符号16位整数,那么int64
值将转换为uint16
s表示的整数范围之外的值。例如,负数int64
-2692被映射到62844,作为uint16
:以下是表示为
int64
s的整数范围:以下是表示为
uint16
s的整数范围:要调试这样的问题,分离出一个显示问题的玩具示例是很有用的。例如,如果您运行
然后在调用
astype
之前,您将看到all_treatments.iloc[i,emcolix]
的值,以及dtype
。这将是发现问题根源的良好起点。在相关问题 更多 >
编程相关推荐