将 pandas 值转换为 int 并在包含 nan 值时
convert pandas values to int and when containing nan values
我正在读取来自 excel 的数据框。这样的 sheet 包含空值。
我想转换所有值(数字到 int),但这不能直接完成,因为 nan 值。
这是一种可能的解决方法:
在pandas
中转换成int数据
import pandas as pd
import numpy as np
ind = list(range(5))
values = [1.0,np.nan,3.0,4.0,5.0]
df5 = pd.DataFrame(index=ind, data={'users':values})
df5
然后将 nan 转换为 -1,这是一个 int
df5 = df5.replace(np.nan,-1)
df5 = df5.astype('int')
df5 = df5.replace(-1, np.nan)
但此操作再次将数据转换为浮点数。
为什么?我应该怎么做?
我不想使用逗号值,即小数,因为“用户”是人。
查看 。有一个功能可以通过使用 dtype 'Int64'
.
将其保留为 NaN 值
您可以在创建数据框时或之后指定数据类型
import pandas as pd
import numpy as np
ind = list(range(5))
values = [1.0,np.nan,3.0,4.0,5.0]
df5 = pd.DataFrame(index=ind, data={'users':values},dtype='Int64')
#df5 = df5.astype('Int64')
df5
给予:
users
0 1
1 <NA>
2 3
3 4
4 5
我正在读取来自 excel 的数据框。这样的 sheet 包含空值。
我想转换所有值(数字到 int),但这不能直接完成,因为 nan 值。
这是一种可能的解决方法:
在pandas
中转换成int数据import pandas as pd
import numpy as np
ind = list(range(5))
values = [1.0,np.nan,3.0,4.0,5.0]
df5 = pd.DataFrame(index=ind, data={'users':values})
df5
然后将 nan 转换为 -1,这是一个 int
df5 = df5.replace(np.nan,-1)
df5 = df5.astype('int')
df5 = df5.replace(-1, np.nan)
但此操作再次将数据转换为浮点数。
为什么?我应该怎么做?
我不想使用逗号值,即小数,因为“用户”是人。
查看 。有一个功能可以通过使用 dtype 'Int64'
.
您可以在创建数据框时或之后指定数据类型
import pandas as pd
import numpy as np
ind = list(range(5))
values = [1.0,np.nan,3.0,4.0,5.0]
df5 = pd.DataFrame(index=ind, data={'users':values},dtype='Int64')
#df5 = df5.astype('Int64')
df5
给予:
users
0 1
1 <NA>
2 3
3 4
4 5