簡體   English   中英

將python中的單位轉換為非人類可讀格式

[英]Convert number with units in python to NON human readable format

轉換包含float AND單位的數字列的最佳方法是什么,如下所示:

df = pd.DataFrame(["211.301 MB","435.5 GB","345.234 Bytes"])

預期輸出(以字節為單位),例如:

211.301*1024*1024 = 221565157.376

像這樣的許多問題: 可重用的庫來獲取人類可讀的文件大小?

正在顯示相反的方法:將數字轉換為人類可讀的格式。 如何將人類可讀的內容轉換為浮點數?

有沒有比拆分更有效的方法:

spl = pd.DataFrame(dataf['Total_Image_File_Size'].str.split(' ',expand=True))

然后用if的倍數解析units列

謝謝

我認為這應該工作: https : //pypi.python.org/pypi/humanfriendly

>>> import humanfriendly
>>> user_input = raw_input("Enter a readable file size: ")
Enter a readable file size: 16G
>>> num_bytes = humanfriendly.parse_size(user_input)
>>> print num_bytes
17179869184
>>> print "You entered:", humanfriendly.format_size(num_bytes)
You entered: 16 GB

您可以創建函數以將文本轉換為值並使用apply

import pandas as pd

df = pd.DataFrame(["211.301 MB","435.5 GB","345.234 Bytes"])


def convert(text):

    parts = text.split(' ')

    value = float(parts[0])

    if parts[1] == 'KB':
        value *= 1024
    elif parts[1] == 'MB':
        value *= 1024 * 1024
    elif parts[1] == 'GB':
        value *= 1024 * 1024

    return value



df['value'] = df[0].apply(convert)


           0         value  
0     211.301 MB  2.215652e+08  
1       435.5 GB  4.566548e+08  
2  345.234 Bytes  3.452340e+02

編輯:您可以在此功能中使用對人humanfriendly的功能,而不是if/elif

只是另一個想法。

>>> for size in "211.301 MB", "435.5 GB", "345.234 Bytes":
        number, unit = size.split()
        print float(number) * 1024**'BKMGT'.index(unit[0])

221565157.376
4.67614564352e+11
345.234

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM