2016-04-21 3 views
1

У меня есть dataframe 880184 * 1, единственным столбцом является либо целочисленный объект, либо строковый объект. Я хочу изменить все строки объект с номером 0. Она выглядит, как показано ниже:python change string object to number

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 
+0

Добро пожаловать в StackOverflow! Это не сайт кодирования, где вы можете попросить других работать для вас. Это сайт Q/A, который стремится собрать множество вопросов, которые могут иметь более одного человека, и полезные ответы на них. Вы должны показать свои усилия, свой нерабочий код и сформулировать четкий вопрос о том, что вы хотите, чтобы мы ответили. – Alfe

+0

Привет, я не хочу, чтобы другие работали для меня. Я просто застрял в этой точке и не знаю, как ее решить. –

ответ

1

Вы можете преобразовать тип в числовой с pd.to_numeric и передать errors='coerce' так, что вы получите NaN для тех, не может быть преобразован в число. В конце концов, вы можете заменить NaN с с нуля:

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 
0

пытаются преобразовать все в целые числа, используя Int() функция. Строки не могут быть преобразованы, поэтому возникает ошибка. Упакуйте это в цикл «try», и вы настроены.

Как это:

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