问题是你获得的NaN价值是什么float,所以int转换为float- 参见na型促销.
NaN
float
int
一种可能的解决方案是将NaN值转换为某个值0,然后可以转换为int:
0
df = pd.DataFrame({"a":range(5)}) df['b'] = df['a'].shift(1).fillna(0).astype(int) print (df) a b 0 0 0 1 1 0 2 2 1 3 3 2 4 4 3