gpt4 book ai didi

python - 转换 pandas 中列的值

转载 作者:太空宇宙 更新时间:2023-11-03 14:44:27 25 4
gpt4 key购买 nike

我有以下格式的 csv

Used CPU    Used Memory Hard CPU    Hard Memory
1 4Gi 50 24Gi
0 0 0 0
2 4Gi 4 8Gi
2 4Gi 4 8Gi
0 0 100m 128Mi
51550m 39528Mi 56 47Gi

它们是字符串值。在此表中,51550m 表示我需要将其转换为核心的毫核。 39528Mi 是 Mebibyte,我需要将其转换为 gibibyte(左右)。我想知道如何明智地读取每个值列以及是否找到 m(如 51550m),将其转换为核心。然后将列的所有值转换为整数,以便我可以将它们全部相加。

我想使用 pandas,但我对它还很陌生。我知道我可以尝试将 df["col_name"].astype("int") 转换为整数,但我还需要解释 millicore 值以将它们转换。

非常感谢任何帮助。

预期输出:所有值都必须是 float 。我从对话中得到了低于

100 millicore = 1/10 cores
1 Mebibyte = 0.00104858 GB


Used CPU Used Memory Hard CPU Hard Memory
1 4.296 50 25.7698
2 4.296 4 8.592
2 4.296 4 8.592
0 0 .1 0.134218
51.550 41.448112 56 50.4659

最佳答案

你可以这样做。

更新:

df = pd.read_csv("your_csv_file")

'''df = pd.DataFrame({'Used CPU':['1','0','2','2','0','51550m'], \
'Used Memory':['4Gi','0','4Gi','4Gi','0', '39528Mi'], \
'Hard CPU':['50','0','4','4','100m','56'], \
'Hard Memory':['24Gi','0','8Gi', '8Gi', '128Mi', '47Gi']})'''

units = {'m':0.001,'Mi':0.00104858,'Gi':1.0737425}
def conversion(x):
for key in units.keys():
if key in str(x):
x = x.split(key)[0]
x = (int(x)*units[key])
return x
return str(x)

df = df.applymap(conversion)
df = df.apply(lambda x: x.astype(np.float64), axis=1)
print(df)

输入:

   Hard CPU  Hard Memory  Used CPU  Used Memory
0 50 24Gi 1 4Gi
1 0 0 0 0
2 4 8Gi 2 4Gi
3 4 8Gi 2 4Gi
4 100m 128Mi 0 0
5 56 47Gi 51550m 39528Mi

输出:

    Hard CPU  Hard Memory  Used CPU  Used Memory
0 50.0 25.76980 1.00 4.29497
1 0.0 0.000000 0.00 0.00000
2 4.0 8.589940 2.00 4.29497
3 4.0 8.589940 2.00 4.29497
4 0.1 0.134218 0.00 0.00000
5 56.0 50.465898 51.55 41.44827

它们在 Float64 中。现在你可以使用 df['Hard Memory'] + df['Used Memory']

关于python - 转换 pandas 中列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50947447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com