如何用pandas中的新值替换列中的值

时间:2016-07-26 21:02:03

标签: python pandas dataframe

我有这段代码:

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等。

我想要的是这段代码应该用写入函数中的vales计算的值替换列条目。如果我在编写代码后print(frame['DAMAGE_PROPERTY']),我仍然会看到原始值。

1 个答案:

答案 0 :(得分:2)

你可以试试这个

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