2016-07-26 102 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