[英]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.