我有这段代码:
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'])
,我仍然会看到原始值。
答案 0 :(得分:2)
你可以试试这个
frame['DAMAGE_PROPERTY'] = frame['DAMAGE_PROPERTY'].apply(chgFormat, axis=1)