python将字符串对象更改为数字

时间:2016-04-21 15:20:48

标签: python pandas

我有一个880184 * 1数据帧,唯一的列是整数对象或字符串对象。我想将所有字符串对象更改为数字0.如下所示:

index               column
.....               ......
23155     WILLS ST / MIDDLE POINT RD
23156                          20323
23157    400 Block of BELLA VISTA WY
23158                          19090
23159     100 Block of SAN BENITO WY
23160                          20474

现在问题是数字和字符串都是'对象'类型,我不知道如何将对象的字符串更改为0,如下所示:

index                          column
.....                          ......
23155                            0
23156                          20323
23157                            0
23158                          19090
23159                            0
23160                          20474

另一个问题是样本量太大,使得它太长而无法用于循环来逐行修复。我想使用类似的东西:

df.loc[df.column == ...] = 0

2 个答案:

答案 0 :(得分:1)

您可以使用pd.to_numeric将类型转换为数字并传递errors='coerce',这样您就无法将NaN转换为数字。最后,您可以将NaN s替换为零:

df["column"] = pd.to_numeric(df["column"], errors="coerce").fillna(0)
Out[15]: 
0        0.0
1    20323.0
2        0.0
3    19090.0
4        0.0
5    20474.0
Name: column, dtype: float64

如果您想要整数值,请在末尾添加astype('int64')

df["column"] = pd.to_numeric(df["column"], errors="coerce").fillna(0).astype("int64")
Out[16]: 
0        0
1    20323
2        0
3    19090
4        0
5    20474
Name: column, dtype: int64

答案 1 :(得分:0)

尝试使用int()函数将所有内容转换为整数。 无法转换字符串,因此会引发错误。在“尝试”循环中打包并设置。

像这样:

def converter(currentRowObj):
    try:
        obj = int(currentRowObj)
    except:
        obj = 0
    return obj