use*_*167 13 python numpy pandas
shift将我的列从整数转换为浮点数.事实证明这np.nan只是浮动.有没有办法将移位列保持为整数?
df = pd.DataFrame({"a":range(5)})
df['b'] = df['a'].shift(1)
df['a']
# 0 0
# 1 1
# 2 2
# 3 3
# 4 4
# Name: a, dtype: int64
df['b']
# 0 NaN
# 1 0
# 2 1
# 3 2
# 4 3
# Name: b, dtype: float64
Run Code Online (Sandbox Code Playgroud)
jez*_*ael 13
问题是你获得的NaN价值是什么float,所以int转换为float- 参见na型促销.
一种可能的解决方案是将NaN值转换为某个值0,然后可以转换为int:
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
Run Code Online (Sandbox Code Playgroud)
小智 6
从 pandas 版本开始的另一个解决方案0.24.0:只需为参数提供一个值fill_value:
df['b'] = df['a'].shift(1, fill_value=0)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4070 次 |
| 最近记录: |