我的数据框中有以下值,列数据类型为“对象”
df['Calc_id']
2345.0
4545.0
1234.0
NaN
Nan
1000.0
如何删除小数点(.0)?
我首先尝试的是:
df['Calc_id'].astype(int)
错误:
TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'
另一项审判:
df['Calc_id'].str.strip('.0')
这会删除末尾的小数,但会删除所有尾随零,例如下面的示例
如果我们的值为1000,那么它将转换为1
我该如何解决?
我希望1000.0的结果是1000,但是eh的实际输出是1 由于str.strip('。0')
我该如何解决?
答案 0 :(得分:0)
一种替换Nan或填充Nan然后转换为int obj的解决方案:
>>> df['Calc_id'].replace(np.nan, 0.0).astype(int)
0 2345
1 4545
2 1234
3 0
4 0
Name: Calc_id, dtype: int64
或者您可以先使用fillna方法进行转换,然后再转换为零以获得int obj:
>>> df['Calc_id'].fillna(0).astype(int)
0 2345
1 4545
2 1234
3 0
4 0
Name: Calc_id, dtype: int64
您的解决方案是:
正如我所见,您的意图只是删除结尾的.0
,然后在下面执行此操作。
编辑:
>>> df
Calc_id
0 2345.0
1 4545.0
2 1234.0
3 1000.0
4 2000.0
5 3000.0
6 NaN
7 NaN
只需使用边界\b.0\b
一词来精确替换即可。
>>> df['Calc_id'].replace(r'(\b.0\b)', '', regex=True)
0 2345
1 4545
2 1234
3 1000
4 2000
5 3000
6 nan
7 nan
Name: Calc_id, dtype: object