将指定索引上的TB转换为GB

  • 本文关键字:TB 转换 GB 索引 pandas
  • 更新时间 :
  • 英文 :


我写了这样一段代码。这里我想把构成TB和GB的所有列都变成一个整数。例如,如果列有2tb,此代码将删除TB并将其保留为2。这个程序运行良好。现在我想做的是将2TB转换为2048 GB,以便我可以将所有列值相加。有没有办法在删除TB的同时对特定行进行计算?

def removeend():
df= pd.read_csv('ExportList.csv')
if df["Used Space"].str.contains("GB | TB").any() or df["Memory Size"].str.contains("GB | TB").any() or df["Host CPU"].str.contains("Hz|MHz|GHz").any():
df['Used Space'] = df['Used Space'].str.replace(r'GB|TB', '', regex=True)
df["Memory Size"] = df["Memory Size"].str.replace(r'GB|TB', '', regex=True)
df['Host CPU'] = df['Host CPU'].str.replace(r'MHz|Hz|GHz', '', regex=True)
df = df.convert_dtypes()
df["Used Space"] = pd.to_numeric(df["Used Space"])
df["Memory Size"] = pd.to_numeric(df["Memory Size"])
df["Host CPU"] = pd.to_numeric(df["Host CPU"])
else:
print("Error occured!!!")
return df

definecreate一个自定义函数:

def converter(x):
try:
return pd.eval(x)
except:
return x

最后:

cols=["Used Space","Memory Size"]
df[cols]=df[cols].replace({'GB':'','TB':'*1024'},regex=True).applymap(converter)
df["Host CPU"]=df["Host CPU"].replace({'MHz':'','GHz':'*0.001','Hz':'*0.000001'},regex=True).map(converter)

最新更新