簡體   English   中英

如何以百分比而不是字符串的形式將值存儲在Pandas DataFrame中

[英]How to store values in a Pandas DataFrame as a percentage and not a string

我正在使用熊貓創建數據框,然后將其導入PowerBI以進行可視化。 數據框中的一列是百分比計算。

我沒有問題計算值。 但是,這些值的末尾沒有'%'符號,例如55.2,而不是55.2%。

我的初始數據框的一個示例:

df1 = 

year_per    pass    fail    total
---------------------------------
201901      300     700     1000
201902      400     600     1000
201903      200     800     1000
201904      500     500     1000

然后,我計算兩個新列,以說明每個列所代表的總數的百分比,以使新數據框為:

df2 = 

year_per    pass    fail    total    pass%    fail%
---------------------------------------------------
201901      300     700     1000     30.0     70.0
201902      400     600     1000     40.0     60.0
201903      200     800     1000     20.0     80.0
201904      500     500     1000     50.0     50.0

這些新的%列是使用以下代碼創建的:

df2['pass%'] = round((df1['pass'] / df1['total']) * 100,1)

哪個有效。 PowerBI很高興使用這些值。 但是,為了清楚起見,我希望它在最后顯示“%”符號。 因此,我將計算代碼更新為:

df2['pass%'] = (round((df1['pass'] / df1['total']) * 100,1).astype(str))+'%'

這也會在視覺上產生正確的輸出。 但是,由於這些值現在是字符串,因此PowerBI無法處理新值,因為可視化文件期望數字格式而不是字符串。

我也嘗試過使用以下格式(如此處所述: 如何在python中顯示百分比 ):

{0:.1f}%".format()

即:

df2['pass%'] = '{0:.1f}%'.format(round((df1['pass'] / df1['total']) * 100,1))

但得到錯誤:

'TypeError: unsupported format string passed to Series.__format__'

因此,我想知道是否有一種方法可以將值存儲為數字格式,並在數字后加上%符號? 否則,我將只使用不帶%號的值。

這是因為,您將一個系列傳遞給round ,它期望一個標量數值參數,但得到一個系列( format也將對系列產生問題)。 您可以改為:

df2['pass%'] = (df1['pass'] / df1['total']).map(lambda num: '{0:.1f}%'.format(round(num * 100, 1))

但是您知道,與您的問題的標題相反,這當然會將百分比存儲為字符串。

暫無
暫無

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

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