我有一个浮点值的列,我想把它们变成整数。
pdsm:
federation_unit_id city_id
id
3 8.0 3.0
7 None None
17 8.0 3.0
18 8.0 3.0
19 8.0 9.0
它们的类型在列中的值是:class' float',除非None是NoneType。
如果我试试这个:
pdsm['federation_unit_id']=pdsm['federation_unit_id'].astype(int)
pdsm['city_id'].iloc[0]=pdsm.city_id.astype(int)
我明白了:
TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'
如果我试试这个:
pdsm['federation_unit_id']=pdsm['federation_unit_id'].apply(lambda x: x.astype(int) if x is not None else None)
pdsm['city_id'].iloc[0]=pdsm.city_id.apply(lambda x: x.astype(int) if x is not None else None)
我明白了:
AttributeError: 'float' object has no attribute 'astype'
有人可以帮忙吗?我在这里疯了。
答案 0 :(得分:3)
我认为在pandas中你不能在同一列中使用int和None或nan。它还没有得到支持。
如果你可以将None转换为0,你可以这样做:
df.fillna(0).astype(int)
Out[157]:
federation_unit_id city_id
id
3 8 3
7 0 0
17 8 3
18 8 3
19 8 9