使用 Python 在混合列中进行 GB 到 TB 的复杂转换

我有一个数据框 df,如下所示:


  TB    TB2

  4.6    5.0

  6.8    502.4 G

我想要的输出是将后面带有字母 G 的任何值转换为 TB,而不干扰该列中的其他值。


1000 GB = 1 TB


 TB    TB2

 4.6    5.0

 6.8    0.5024

一位成员建议使用以下代码:


df['Partial_Capacity TB']=df['Partial_Capacity TB'].str.replace('\s\w+','').astype(float).div(1000)

但是,该列中的所有值都将被转换,无论其后面的“G”如何。我现在正在研究这个,任何建议都会受到赞赏


素胚勾勒不出你
浏览 123回答 1
1回答

慕的地8271018

#Select rows containing Gm=df.TB2.str.contains('G')#Use the loc accessor to mask relevant column, strip G from string and divide by 1000df.loc[m,'TB2']=df.loc[m,'TB2'].str.replace('\s\w+','').astype(float).div(1000)    print(df)    TB     TB20  4.6     5.01  6.8  0.5024
打开App,查看更多内容
随时随地看视频慕课网APP