微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 在pandas数据框中转换包含nan,hypen和逗号的列的数据类型

df = pd.read_csv("data.csv", encoding = "ISO-8859-1")

现在,我有一个列,我的值如下:

样本数据供参考:

enter image description here

现在,我想使用下面的代码将列a转换为数字格式:

df[['A']] = df[['A']].astype(int)

它给了我一个错误.
问题是我在一列中都有三个(nan,hypen和逗号),需要一起解决它们.
有没有更好的方法来转换这些而不替换(nan到-1)和类似的东西?

解决方法:

使用参数千和na_values,但是缺少值时不能转换为整数,因为现在至少有一个NaN值转换列浮动,请参见this.因此可能的解决方案是将它们替换为int,例如, -1然后转换为整数:

注意 – 在新版本的pandas(0.24.0,即将推出)中,pandas已经获得了保存缺失值的整数dtypes的能力,Nullable Integer Data Type.

import pandas as pd

temp=u'''A
2254
"1,234"
"3,385"
nan
-
-
nan'''
#after testing replace 'pd.compat.StringIO(temp)' to 'data.csv'
df = pd.read_csv(pd.compat.StringIO(temp), 
                 encoding = "ISO-8859-1", 
                 thousands=',', 
                 na_values='-')

print (df)
        A
0  2254.0
1  1234.0
2  3385.0
3     NaN
4     NaN
5     NaN
6     NaN
df['A'] = df['A'].fillna(-1).astype(int)
print (df)
      A
0  2254
1  1234
2  3385
3    -1
4    -1
5    -1
6    -1

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐