2016-07-26 2 views
0

У меня есть этот код:как заменить значения в столбцах новых значений в пандах

def chgFormat(x): 
    newFormat = 0 
    if x[-1] == 'K': 
     if len(x)==1:newFormat=1000 
     else:newFormat = float(x[:-1])*1000 
    elif x[-1] == 'M': 
     newFormat = float(x[:-1]) * 100000 
    elif x[-1] == 'B': 
     newFormat = float(x[:-1]) * 1000000 
    elif x[-1] == 'H': 
     newFormat = float(x[:-1]) * 100 
    elif x[-1] == 'h': 
     newFormat = float(x[:-1]) * 100 
    else: 
     newFormat = float(x) 
    return newFormat 


frame=pd.read_csv(folderpath+"/StormEvents_details-ftp_v1.0_d1951_c20160223.csv",index_col=None,encoding = "ISO-8859-1",header=0,low_memory=False) 
frame['DAMAGE_PROPERTY'].fillna('0K',inplace=True) 
frame['DAMAGE_PROPERTY'].apply(chgFormat) 

Этот код преобразует запись данных, как 2K, 3K, 3H, 3B в 2000.0, 3000.0, 300.0 и т.д.

То, что я хочу, этот код должен заменить колонку записи по значениям, вычисленным по значениям в письменной функции. Если я сделаю print(frame['DAMAGE_PROPERTY']) после письменного кода, я по-прежнему вижу исходные значения.

ответ

2

Вы можете попробовать это

frame['DAMAGE_PROPERTY'] = frame['DAMAGE_PROPERTY'].apply(chgFormat, axis=1) 
+0

Это было очень просто. Спасибо, что указали это ... – chinmaykelkar

Смежные вопросы